Javaのaws SDKを使用した Textmessageの送信方法 に関する公式のawsドキュメントは非常に簡単です。
しかし、下部の例に示すようなメッセージを送信すると、エラー_User: arn:aws:iam::xxx:user/sms-testing is not authorized to perform: SNS:Publish on resource: +999999999
_が発生します
_+999999999
_は.withPhoneNumber()
呼び出しに渡される電話番号であることに注意してください。そのため、aws apiは、IAMユーザーが_SNS:Publish
_を使用するリソースへのメッセージを必要な権限を持っていないというメッセージを表示します。電話番号。
私の質問:SMS Java SDKを介して通知を送信できるIAMユーザーを作成するにはどうすればよいですか?現在、作成する必要があるようです私がメッセージを送信するそれぞれの番号に対する許可。これは奇妙で維持するのが難しいようです。
このエラーは、IAMユーザー "sms-testing"がそのリソースにSNS(SNS:Publish)に公開する権限を持っていないことを示しています。 IAMユーザーにはSNS:Publish権限がまったくない可能性があります。つまり、何も公開できません。その場合は、次のIAMポリシーをユーザーに追加する必要がありますOR IAMユーザーが所属するIAMグループにポリシーを追加します。
以下のリンクをクリックすると、IAMコンソールにアクセスして、「sms-testing」ユーザーのアクセス許可を編集できます。また、IAMユーザーがSNS(SMS、トピック、エンドポイントなど)に何かを発行できるようにするサンプルポリシーも以下にあります。
権限を少し制限したい場合は、「リソース」を変更して、トピックやアプリケーションarnなどの特定のSNSリソースを指定します。 IAMユーザーポリシーを編集できない場合は、管理者にこのポリシーの追加を依頼する必要があります。
IAMユーザーを変更します: https://console.aws.Amazon.com/iam/home?region=us-east-1#users/sms-testing
すべてのリソースへのSNS公開を許可するためのサンプルポリシー:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "*"
}
]
}
SNSにはSMSリソースがないため、少しハックして、トピックとプラットフォームアプリケーションへのすべてのSNS公開を「拒否」し、SMSのみを残す残りへの公開を許可できます(今)。
SMSへの公開のみを許可し、トピックとアプリケーションへの公開を拒否するサンプルポリシーを次に示します(プッシュ通知)。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "*"
}
]
}
お役に立てば幸いです。
-デニス