gpt4 book ai didi

java - 使用 AmazonSNSClient 发送短信时的授权

转载 作者:太空狗 更新时间:2023-10-29 22:50:10 24 4
gpt4 key购买 nike

how to send a Textmessage 上的官方 aws 文档在 Java 中使用 aws SDK 非常简单。

但是,当发送如底部示例所示的消息时,我收到错误 User: arn:aws:iam::xxx:user/sms-testing is not authorized to perform: SNS :在资源上发布:+999999999

请注意,+999999999 是传递给 .withPhoneNumber() 调用的电话号码,因此 aws api 提示我的 IAM 用户没有必要的权限 SNS:Publish 使用该电话号码向资源发送消息。

我的问题:如何创建能够通过 Java SDK 发送短信通知的 IAM 用户?目前,我似乎必须为我要向其发送消息的每个号码创建一个权限,这看起来很奇怪且难以维护。

最佳答案

该错误告诉您您的 IAM 用户“sms-testing”没有向 SNS (SNS:Publish) 发布该资源的权限。您的 IAM 用户可能根本没有 SNS:Publish 权限,这意味着您无法发布任何内容。如果是这种情况,您只需将以下 IAM 策略添加到您的用户或将该策略添加到您的 IAM 用户所属的 IAM 组。

下面的链接会将您带到 IAM 控制台,以编辑“sms-testing”用户的权限。下面还有一个示例策略,允许 IAM 用户将任何内容发布到 SNS(SMS、主题、端点等)。

如果您想稍微锁定权限,您可以修改“资源”并指定特定的 SNS 资源,如主题或应用程序 arn。如果您无法编辑 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": "*"
}
]
}

希望对您有所帮助。

-丹尼斯

关于java - 使用 AmazonSNSClient 发送短信时的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38871201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com