我在AWS控制台中创建了一个arn主题,还使用电子邮件创建了订阅并确认了订阅。
我在AWS中运行了一个EC2实例,我写了一个小脚本来发送一些细节,例如实例类型,使用的操作系统,架构,安装的JDK,并将其格式化为" json"使用" printf"命令。
我想将脚本的json输出发送到我创建的主题。计划是将来自动化这些东西,但现在它只是一个测试目的。
代码I尝试:
#/bin/bash
AWS_ACCESS_KEY=xUISTaZscgstTgsreTTS
AWS_SECRET_KEY=8hsggTjakjst86AHGSR98agHHYI
credentials="-I $AWS_ACCESS_KEY -S $AWS_SECRET_KEY"
topicARN=arn:aws:sns:eu-west-1:9876577867654:xyzsy-ex:9d18e516-25h3-81h1-n148-chqa712qi1p0
json="$(./temp.sh)"
aws sns publish --topic-arn $topicARN --message-structure json --message "${json}"
temp.sh输出:
{
"component": {
"component": "xyz-name",
"comp_version": "03"
},
"Instance": {
"Instance_Type": "t2.small",
"Instance_ID": "i-1e993001234q56789"
"operatingsystem": "rhel"
},
"JDK": "1.8.0_111"
}
但是它要求提供AWS区域,如果提供了抱怨凭证有效性。有没有办法动态提供凭据而不是设置shell来从" .aws / config"?
我计划将其作为cronjob运行,以便每20分钟将输出发送到主题。
答案 0 :(得分:2)
来自the docs:
AWS CLI在中查找凭据和配置设置 以下顺序:
- 命令行选项 - 可以将区域,输出格式和配置文件指定为命令选项以覆盖默认设置。
- 环境变量 -
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
等- AWS凭证文件 - 位于Linux,OS X或Unix上的
~/.aws/credentials
或Windows上的C:\Users\USERNAME \.aws\credentials
。 除默认情况外,此文件还可以包含多个命名配置文件 轮廓。- CLI配置文件 - 通常位于Linux,OS X或Unix上的
~/.aws/config
或C:\Users\USERNAME \.aws\config
上 视窗。此文件可以包含默认配置文件,名为profiles,和 每个CLI特定的配置参数。- 实例配置文件凭据 - 这些凭据可以在具有指定实例角色的EC2实例上使用,并通过其提供 Amazon EC2元数据服务。
因此,您可以从您调用的aws sns
命令中传递凭据:
#/bin/bash
topicARN=arn:aws:sns:eu-west-1:9876577867654:xyzsy-ex:9d18e516-25h3-81h1-n148-chqa712qi1p0
json="$(./temp.sh)"
AWS_ACCESS_KEY=xUISTaZscgstTgsreTTS AWS_SECRET_KEY=8hsggTjakjst86AHGSR98agHHYI aws sns publish --topic-arn $topicARN --message-structure json --message "${json}"