2016-11-15 79 views
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分钟将输出发送到主题。

回答

0

the docs

的AWS CLI查找以下顺序在 凭证和配置设置:

  • 命令行选项 - 区域,输出格式和配置文件可以被指定为命令选项覆盖默认设置。
  • 环境变量 - AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
  • 的AWS证书文件 - 位于~/.aws/credentials在Linux,OS X,或Unix,或者在C:\Users\USERNAME \.aws\credentials在Windows上。 除了默认的 配置文件外,此文件还可以包含多个命名的配置文件。
  • CLI配置文件 - 通常位于Linux,OS X或Unix上的~/.aws/config上,或上的 Windows上。该文件可以包含默认配置文件,名为配置文件和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}" 
+0

感谢快速回复。我试过你的解决方案。它不再要求证书,但仍然抱怨地区。 '您必须指定一个区域。您也可以通过运行“aws configure”来配置您的区域。 我甚至试图追加区域就像凭证,但它没有奏效。 –

+0

@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

+0

WOW ...我做了一些跟踪和错误..它只是工作..现在我得到一些错误消息: 当调用发布操作时发生错误(InvalidParameter) :无效参数:消息结构 - 在JSON消息体中没有默认条目 –