2016-11-15 72 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消息體中沒有默認條目 –