我试图通过python使用boto3库为SNS主题设置Platfrom应用程序属性。
以下是脚本片段
client1 = boto3.client('sns',region_name="us-east-1",aws_access_key_id=access_key,aws_secret_access_key=secret_access_key)
def getSNSattr():
response = client1.set_platform_application_attributes(
PlatformApplicationArn='arn:aws:sns:us-east-1:63124104179:testTop1',
Attributes={
'key':'SuccessFeedbackSampleRate',
'value':'100'
}
)
下面是我得到的错误。aws文档没有python的例子,也没什么帮助。我不确定我错过了什么。请帮帮忙
*Traceback (most recent call last):
File "sns2.py", line 20, in <module>
getSNSattr()
File "sns2.py", line 15, in getSNSattr
'key': 'SuccessFeedbackSampleRate'
File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 317, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 615, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameter) when calling the SetPlatformApplicationAttributes operation: Invalid parameter: PlatformApplicationArn Reason: Wrong number of slashes in relative portion of the ARN.*
AWS文档供参考:https://docs . AWS . Amazon . com/SNS/latest/API/API _ setplatformapplicationattributes . html
https://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Client.set_platform_application_attributes
您在PlatformApplicationArn中放置的ARN不是平台ARN,而是主题ARN。如果要设置主题的属性,请考虑使用SetTopicAttributes API。我还将使用双引号,因为属性是JSON格式的。
所有这些都可以使用 AWS CLI 轻松进行测试:
$ aws sns get-platform-application-attributes --platform-application-arn arn:aws:sns:us-east-1:123456789012:app/GCM/My_App
{
"Attributes": {
"FailureFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSFailureFeedback",
"EventDeliveryFailure": "arn:aws:sns:us-east-1:123456789012:Test",
"EventEndpointDeleted": "arn:aws:sns:us-east-1:123456789012:Test",
"EventEndpointUpdated": "arn:aws:sns:us-east-1:123456789012:Test",
"Enabled": "true",
"EventEndpointCreated": "arn:aws:sns:us-east-1:123456789012:Test",
"SuccessFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSSuccessFeedback"
}
}
$ aws sns set-platform-application-attributes --platform-application-arn arn:aws:sns:us-east-1:123456789012:app/GCM/My_App --attributes '{"SuccessFeedbackSampleRate": "100"}'
$ aws sns get-platform-application-attributes --platform-application-arn arn:aws:sns:us-east-1:123456789012:app/GCM/My_App
{
"Attributes": {
"FailureFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSFailureFeedback",
"EventDeliveryFailure": "arn:aws:sns:us-east-1:123456789012:Test",
"EventEndpointDeleted": "arn:aws:sns:us-east-1:123456789012:Test",
"SuccessFeedbackSampleRate": "100",
"EventEndpointUpdated": "arn:aws:sns:us-east-1:123456789012:Test",
"Enabled": "true",
"EventEndpointCreated": "arn:aws:sns:us-east-1:123456789012:Test",
"SuccessFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSSuccessFeedback"
}
}
如果要为应用程序设置属性,请将SetPlatformApplicationAttributes API与应用程序ARN一起使用;如果要为主题设置属性,则将SetTopicAttribute API与主题ARN一起。还使用双引号,因为属性是JSON格式的。
代码应该类似于:
def getSNSattr():
response = client1.set_platform_application_attributes(
PlatformApplicationArn="arn:aws:sns:us-east-1:63124104179:app/GCM/testApp1",
Attributes={
"SuccessFeedbackSampleRate":"100"
}
)
问题内容: 我正在尝试自动进行SFTP访问的设置。该脚本以具有sudo权限且没有密码的用户身份运行。 我可以这样创建一个用户: 接下来,我需要设置用户的密码,但是我不知道怎么做。这是我尝试过的。 在我的python程序中,它没有任何作用,在交互式解释器中,它在第一行之后锁定。 最好的方法是什么? 我在Ubuntu lucid上运行python 2.6。 问题答案: 的文档说,如果要通过参数将数据发
问题内容: 如何通过PHP脚本设置cron作业。 问题答案: 这将添加一个每天上午9:30运行的脚本。 如果从Web服务器运行此脚本,可能会遇到权限问题。为了解决这个问题,我建议使用另一种方法。 这是一种可能的解决方案。创建需要运行的脚本列表。您可以将其保存在文本文件或数据库中。创建一个脚本来读取此列表,并每分钟或每5分钟(使用cronjob)运行它。您的脚本将需要足够聪明,以决定何时运行脚本列表
问题内容: 我正在尝试设置脚本以增加Xcode项目的内部版本号。我进行了一次API调用以获取当前的内部版本号,然后我希望对其进行递增,然后将该新的版本号用作环境变量,以便Xcode插件可以使用它。 我安装了EnvInject插件,但是我不知道如何将var从我的shell脚本中获取到环境变量中。 这设置为我需要的值,但是如何将其分配给环境变量,以便以后在工作中访问它? 问题答案: 添加一个构建步骤以
问题内容: 我有一些需要环境变量的仪器,我想从python代码中自动设置。所以我尝试了几种方法来实现它,但是没有一个成功。这里有些例子: 我在我的python脚本中插入以下代码 os.system(“export ENV_VAR=/some_path”) 我创建了bash脚本(env.sh)并从python运行它: export ENV_VAR=some_path os.system(“sourc
问题内容: 我知道如何在/ etc / profile和环境变量中进行设置。 但是,如果我想在脚本中进行设置怎么办?是导入os,sys吗?我该怎么做? 问题答案: 您没有设置,而是向中添加条目。这是应该在其中搜索Python软件包的目录列表,因此您只需将目录追加到该列表即可。 实际上,是通过分割路径分隔符上的值来初始化的(在类似Linux的系统上,在Windows上)。 您也可以使用来添加目录,该
问题内容: 我尝试执行以下操作(我的jar和python文件都在同一目录中): 和 无论是工作过。因此,我当时以为应该改用Jython,但我认为必须有一种更简单的方法来通过python执行jar文件。 你知道我可能做错了什么吗?或者,是否还有其他网站可以进一步研究我的问题? 问题答案: 我将以这种方式使用子流程: 但是,如果你有一个正确配置的,你应该能够直接运行jar,因为你写的。 那么,这正是您