我正试图在AWS代码构建项目中通过打包器创建一个AMI。
此AMI将用于启动模板
,启动模板将用于ASG
当ASG通过此启动模板获取实例时,它应该与ALB的现有目标组一起工作。
为了澄清,我的期望是…
- 通过打包器在代码构建项目中生成AMI
- 使用#1 AMI创建启动模板
- 使用ASG的#2启动模板
- ASG启动新实例
- 现有目标组执行健康检查#4实例
在步骤5中,我现有的目标组未能为新实例做好健康检查,因为它具有不同的vpc
(现有目标组使用自定义VPC,#4实例具有默认VPC(
因此,在AMI生成期间,我回到#1设置相同的VPC。
但是代码构建项目在调用其中的打包器模板时失败。
它返回到以下
==> 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.
在此更新之前,打包器模板中没有与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
- Q1.在这里使用VPC的配置正确吗
- Q1-1。如果是,则需要哪些权限才能允许此任务
- Q1-2。如果没有,你能告诉我这个的正确格式吗
- Q1-1。如果是,则需要哪些权限才能允许此任务
- Q2.或者。。。这是获得一些能够与我现有的目标群体通信的实例的正确方式吗
提前感谢。你的任何提及都会对我有所帮助。
我得到了当地社区的一些帮助
现在我发现我在没有足够信息的情况下写了太多宽泛而不好的问题。有几个问题。
- 我本应该使用CloudTrail而不是CloudWatch来了解哪个角色和操作造成了问题。我的代码生成项目没有ec2.RunInstances权限。
- 在CloudTrail上看到这一消息后,我更新了代码构建项目的角色策略,并通过了该策略。但还有另一个问题
- 在通过packer启动实例后,它无法与ssh连接。通过ssh搜索packer的超时问题,我从Stack溢出中得到了一些答案。并更新安全组以允许ssh用于packer
如果需要,将删除此问题
感谢我的当地社区和之前的回答&堆栈溢出上的提问者。