【问题标题】:How to use VPC with packer to generate AMI in AWS codebuild project?如何在 AWS codebuild 项目中使用 VPC 和 packer 生成 AMI?
【发布时间】:2022-08-03 14:04:50
【问题描述】:

我正在尝试通过打包程序在 AWS 代码构建项目中创建 AMI。

此 AMI 将用于启动模板
启动模板将用于 ASG。
当 ASG 通过此启动模板获取实例时,它应该与 ALB 的现有目标组一起使用。

为了澄清,我的期望是......

  1. 通过打包程序在代码构建项目中生成 AMI
  2. 使用 #1 AMI 创建启动模板
  3. 使用#2 启动模板到 ASG
  4. ASG 启动新实例
  5. 现有目标组执行健康检查 #4 实例。

    在第 5 步中,我现有的目标组未能为新实例做好健康检查,因为它具有不同的 vpc。
    (现有目标组使用自定义 VPC,#4 实例具有默认 VPC)

    因此,我支持 #1 在 AMI 生成期间设置相同的 VPC。
    但是codebuild项目在调用其中的packer模板时失败了。

    它在下面返回

    ==> amazon-ebs: Prevalidating AMI Name...
        amazon-ebs: Found Image ID: ami-12345678
    ==> amazon-ebs: Creating temporary keypair: packer_6242d99f-6cdb-72db-3299-12345678
    ==> amazon-ebs: Launching a source AWS instance...
    ==> amazon-ebs: Error launching source instance: UnauthorizedOperation: You are not authorized to perform this operation. 
    

    在此更新之前,packer 模板中没有与 vpc 和子网相关的设置,并且它们可以正常工作。
    我为此代码构建项目添加了一些与 vpc 相关的权限,但还没有运气。

    以下是我在 packer-template.json 上的构建器配置

        \"builders\": [
            {
                \"type\": \"amazon-ebs\",
                \"region\": \"{{user `aws_region`}}\",
                \"instance_type\": \"t2.micro\",
                \"ssh_username\": \"ubuntu\",
                \"associate_public_ip_address\": true,
                \"subnet_id\": \"subnet-12345678\",
                \"vpc_id\": \"vpc-12345678\",
                \"iam_instance_profile\": \"blah-profile-12345678\",
                \"security_group_id\": \"sg-12345678\",
                \"ami_name\": \"{{user `new_ami_name`}}\",
                \"ami_description\": \"AMI from Packer {{isotime \\\"20060102-030405\\\"}}\",
                \"source_ami_filter\": {
                    \"filters\": {
                        \"virtualization-type\": \"hvm\",
                        \"name\": \"{{user `source_ami_name`}}\",
                        \"root-device-type\": \"ebs\"
                    },
                    \"owners\": [\"************\"],
                    \"most_recent\": true
                },
                \"tags\": {
                    \"Name\": \"{{user `new_ami_name`}}\"
                }
            }
        ],
    

    在这一步添加(之前不存在)

    • subnet_id
    • vpc_id
    • iam_instance_profile
    • security_group_id


    • 第一季度。这是在此处使用 VPC 的正确配置吗?
      • Q1-1。如果是,需要哪些权限才能执行此任务?
      • Q1-2。如果没有,你能告诉我这个的正确格式吗?
    • 第二季度。或者......这是获得一些能够与我现有的目标群体通信的实例的正确方法......?

    提前致谢。您的任何提及都会对我有所帮助。

    标签: amazon-iam amazon-vpc aws-codebuild amazon-ami hashicorp-packer


    【解决方案1】:

    我从当地社区得到了一些帮助。
    现在我看到我在没有足够信息的情况下写了太多宽泛且不好的问题。有几个问题。

    1. 我应该使用CloudTrail而不是 CloudWatch 来了解哪些角色和操作正在制造问题。我的 codebuild 项目没有 ec2.RunInstances 权限。
      1. 在 CloudTrail 上看到这个后,我更新了 codebuild 项目的角色策略,并通过了。但还有另一个问题。
      2. packer 启动实例后,无法连接 ssh。通过 ssh 搜索 packer 的超时问题,我从 Stack Overflow 中得到了一些答案。并更新安全组以允许 ssh 用于打包程序。

        如果需要,将删除此问题。
        感谢我的当地社区以及之前关于 Stack Overflow 的回答和提问者。

    【讨论】:

      【解决方案2】:

      您是如何更新 SSH 的安全组的?

      【讨论】:

        猜你喜欢
        • 2022-11-19
        • 2021-08-05
        • 2013-12-02
        • 2018-09-10
        • 1970-01-01
        • 2022-10-07
        • 1970-01-01
        • 2020-03-07
        • 1970-01-01
        相关资源
        最近更新 更多