【发布时间】:2018-02-19 16:44:42
【问题描述】:
我现在正在接近 aws。
我正在尝试将参数存储在我的 EC2 实例的 Parameter Store 中,我会在 Codedeploy 的 AfterInstall 步骤中将它们放入环境变量中。 部署工作,但我无法获取参数。
我尝试按照本教程进行操作https://aws.amazon.com/it/blogs/mt/use-parameter-store-to-securely-access-secrets-and-config-data-in-aws-codedeploy/。
我创建的策略“ParameterStorePolicy”如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeParameters"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssm:GetParameters"
],
"Resource": [
"arn:aws:ssm:us-east-2:<myId>:parameter/MySecureSQLPassword"
]
},
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": "arn:aws:kms:us-east-2:<myId>:alias/aws/ssm"
}
]}
我将策略附加到还附加了“AWSCodeDeployRole”的“CodeDeployServiceRole”。
最后在我的脚本“Afterinstall.sh”中我写了以下代码:
cd /home/ubuntu/pypi
export PIPPO=$(aws ssm get-parameters --region us-east-2 --names
MySecureSQLPassword --with-decryption --query Parameters[0].Value)
echo $PIPPO >testPippo.txt
结果是一个空的 testPippo.txt 文件。
谁能告诉我我做错了什么?
谢谢
【问题讨论】:
-
你在参数存储中存储了一些东西吗?
-
是的,我使用值“abcd”存储参数“MySecureSQLPassword”并从我的 EC2 管理控制台手动键入“String”。我怀疑 codedeploy 没有获取参数的权限,但我找不到任何可以帮助我的东西,而且我对这个话题不太自信。
-
我猜您将
<myId>替换为您的 AWS 账户 ID? -
@Dunedan 当然!不能是权限问题吗?当 codedeploy 触发 afterInstall 事件并执行 .ssh 脚本时,执行该操作的是谁?谢谢
-
@SimoneBiffi 如果您没有在 CodeDeploy 的 appspec 文件中指定以用户身份运行,则默认以 root 身份运行。
标签: amazon-web-services amazon-ec2 aws-code-deploy