簡體   English   中英

如何在Elastic Beanstalk上為Amazon SES傳遞AWS_ACCESS_KEY_ID?

[英]How do I pass AWS_ACCESS_KEY_ID for Amazon SES on Elastic Beanstalk?

我在本地計算機中將AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY設置為環境變量,並且工作正常。 當我部署到Elastic Beanstalk時,我設置了“環境屬性”,但是它們以-D Java系統屬性而不是設置為環境變量的形式傳遞,並且會產生錯誤。

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-softwaresettings.html?icmpid=docs_elasticbeanstalk_console

而Tomcat平台設置使用System.getProperty檢索的Java系統屬性。

錯誤

2018-08-03 02:34:37.001信息32073-[nio-8080-exec-9] csxxxxx.apis.XxxxxxxApiController:未發送電子郵件。 錯誤:用戶'arn:aws:sts :: 849611986161:assumed-role / aws-elasticbeanstalk-ec2-role / i-0f447c52c84e1fd93'無權對資源'arn:aws:ses:us-執行'ses:SendEmail' east-1:849611986161:identity/xxxxxx@xxxxx.com'(服務:AmazonSimpleEmailService;狀態代碼:403;錯誤代碼:AccessDenied;請求ID:c3835dda-96c5-11e8-8a21-67774160691b)

Amazon SES僅需要環境變量(或主目錄中的“共享證書文件”)。 那么,如何使用該環境將AWS密鑰傳遞給用於Java Spring Boot應用程序的Elastic Beanstalk中的Amazon SES?

您可以使用SSM(系統管理員服務)參數存儲來保留環境變量,並通過具有IAM權限的任何服務對其進行訪問。 在這種情況下,由於您需要訪問鍵,因此不需要保留任何環境變量。 您可以只在彈性beantalk中使用實例配置文件,它將為彈性beantalk提供您分配的IAM的訪問密鑰和秘密訪問密鑰。 請參閱本文檔

根據https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default

Java系統屬性-aws.accessKeyId和aws.secretKey。 適用於Java的AWS開發工具包使用SystemPropertiesCredentialsProvider加載這些憑證。

因此,而不是AWS_ACCESS_KEY_ID ,而是設置aws.accessKeyId ,然后在命令行aws.accessKeyId其設置為Java系統屬性,該屬性由Amazon SES SDK提取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM