我正在使用CloudFormation创建一个SpotFleet请求,但每当我尝试部署它时,都会失败,并显示以下消息:
Unable to fetch parameters [ami-09bee01cc997a78a6] from parameter store for this account.
我使用了以下代码(代码片段):
SpotFleet:
Type: AWS::EC2::SpotFleet
Properties:
SpotFleetRequestConfigData:
ExcessCapacityTerminationPolicy: default
InstanceInterruptionBehavior: terminate
IamFleetRole: !GetAtt SpotFleetRole.Arn
TargetCapacity: !Ref ClusterSize
TerminateInstancesWithExpiration: false
LaunchSpecifications:
- IamInstanceProfile:
Arn: !Ref ECSInstanceProfile
ImageId: !Ref LatestAmiId
InstanceType: !Ref SpotFleetInstanceType
KeyName: !Ref KeyName
Monitoring:
Enabled: false
SecurityGroups:
- GroupId: !Ref ECSHostSecurityGroup
SubnetId: !Ref PublicSubnet
...ImageId为:
LatestAmiId:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Default: '/aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id'当我从AWS CLI手动获取镜像id时,我会得到:
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id --region us-east-1 --output json | jq -r ."Parameters[].Value"输出:
ami-09bee01cc997a78a6如果手动将该值硬编码到ImageId参数中,则会返回相同的错误(无法获取参数...)
如果我能够从CLI获取id值,为什么会失败?
发布于 2020-11-10 21:33:52
感谢@Marcin的评论和this的回答,我找到了问题所在。
问题是我为Image Id使用了错误的参数类型。我使用的是:
LatestAmiId:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Default: '/aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id'我应该用这个:
LatestAmiId:
Description: Linux AMI
Type: AWS::EC2::Image::Idhttps://stackoverflow.com/questions/64760431
复制相似问题