1
我在AWS控制台中创建了一个arn主题,还使用电子邮件创建了订阅并确认订阅。如何发送shell脚本(json)输出到aws sns主题?
我有一个在AWS中运行的EC2实例,我写了一个小脚本来发送一些细节,如实例类型,使用的操作系统,架构,JDK并使用“printf”命令将其格式化为“json”。
我想将脚本的json输出发送到我创建的主题。该计划将在未来实现自动化,但现在它只是一个测试目的。
代码我想:
#/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-1e9930q56789"
"operatingsystem": "rhel"
},
"JDK": "1.8.0_111"
}
但它要求提供AWS区域,如果提供的抱怨证书的有效性。有没有一种方法来动态提供凭证,而不是设置shell从“.aws/config”中选择?
我打算将它作为cronjob运行,以便每20分钟将输出发送到主题。
感谢快速回复。我试过你的解决方案。它不再要求证书,但仍然抱怨地区。 '您必须指定一个区域。您也可以通过运行“aws configure”来配置您的区域。 我甚至试图追加区域就像凭证,但它没有奏效。 –
@KrishnaGhantaChowdary对于区域,您需要将'--region'参数传递给命令:'AWS_ACCESS_KEY = xUISTaZscgstTgsreTTS AWS_SECRET_KEY = 8hsggTjakjst86AHGSR98agHHYI aws sns publish --topic-arn $ topicARN --message-structure json --message“$ { json}“--region ap-south-1' – hjpotter92
WOW ...我做了一些跟踪和错误..它只是工作..现在我得到一些错误消息: 当调用发布操作时发生错误(InvalidParameter) :无效参数:消息结构 - 在JSON消息体中没有默认条目 –