我想用我的CodeDeploy管道来使用AWS系统管理器存储参数,放弃我最后一次提交Lightsail。
我创建了一个SSM参数:MySecureString**.**
参数在SecureString上设置,KMS加密设置在Actual account上,alias/aws/ssm作为ID。
我的SecureString设置为:postgres://user:password@endpoint.rds.amazonaws.com:5432/myDatabase
✅2.我创建了一个由CodeDeploy实例使用的IAM策略
转到IAM并创建了一个附加于MySpecificCodeDeployUser的JSON策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"ssm:GetParameter"
],
"Resource": [
"arn:aws:kms:*:<accountID>:key/alias/aws/ssm",
"arn:aws:ssm:us-east-1:<accountID>:parameter/MySecureString"
]
}
]
}3.测试MySpecificFCodeDeployUser access SSM MySecureString
将aws configure键入为MySpecificFCodeDeployUser并尝试在本地计算机上运行以下命令:
aws --region=us-east-1 ssm get-parameter --name MySecureString --with-decryption --query Parameter.Value
RETURN ==> "postgres://user:password@endpoint.rds.amazonaws.com:5432/myDatabase"请注意,删除IAM策略会给我一个未经授权的请求,因此IAM策略是正确的。
将MySecureString 添加到由CodeDeploy :执行的脚本中
编辑我的AfterInstall脚本的appspec.yml添加:
aws --region=us-east-1 ssm get-parameter --name MySecureString --with-decryption --query Parameter.Value >> .env给了我一个FAILED Build和stderr:
[stderr] An error occurred (AccessDeniedException) when calling the GetParameter operation: User: arn:aws:sts::<id>:assumed-role/AmazonLightsailInstanceRole/<id> is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:<id>:parameter/MySecureString我看到Lightsail实例继承自服务链接的角色,AWSServiceRoleForLightsail从us/articles/amazon-lightsail-using-service-linked-roles。
是否有一种方法可以为我的lightsail实例添加一个新策略,因为它似乎不是CodeDeploy用户需要的?
发布于 2021-07-27 23:10:56
是否有一种方法可以为我的lightsail实例添加一个新策略,因为它似乎不是CodeDeploy用户需要的?
可悲的是,你不能做这个。为了使您在lightsail实例上的应用程序能够与AWS服务交互,您必须自己进行交互,方法是设置.aws凭据并让应用程序使用它(如果使用AWS,则自动完成)。
Lightsail实例不支持基于用户的实例角色。为此,您需要常规的EC2实例,如下所示:
https://stackoverflow.com/questions/68456891
复制相似问题