在us-west-1

时间:2017-08-15 18:57:42

标签: amazon-web-services amazon-sns

我对AWS SNS的使用有一个快速的问题。

我在us-west-1(N.California)部署了一个EC2(t2.micro,Linux)实例。我用boto3编写了一个python脚本,向我的手机发送一条简单的短信。后来我发现,在我们东部1(N.Virginia)部署的实例中没有SNS服务。直到这一点它才有意义,因为我在执行我的python脚本时看到以下错误,因为该区域在aws configure(AWS cli)和我的python脚本中定义为“us-west-1”。

botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameter) when calling the Publish operation: Invalid parameter: PhoneNumber Reason:

但是为了测试,当我将aws conifgure中的“region”和我的python脚本中的“region”更改为“us-east-1”时,我的脚本将一条短信发送到我的手机上。这不奇怪吗?任何人都可以解释为什么这只是通过更改AWS cli和我的python脚本中的区域来工作,虽然我的实例仍然在us-west-1中我在N.california地区的SNS仪表板上看不到“发布文本消息”选项?

是否正在使用us-east-1重新定义aws cli,类似于在us-east-1中部署一个新实例?我不这么认为。如果我错了,请纠正我。或者就像在us-west-1中有一个实例,但只是使用来自我们的SNS服务 - 东1?请详细说明。

这是我的python脚本,如果有人需要查看它(它是一个简单的片段)。

import boto3

def send_message():
    # Create an SNS client
    client = boto3.client("sns", aws_access_key_id="XXXX", aws_secret_access_key="XXXX", region_name="us-east-1")

    # Send your sms message.
    client.publish(PhoneNumber="XXXX",Message="Hello World!")


if __name__ == '__main__':
    send_message()

2 个答案:

答案 0 :(得分:1)

  

正在使用us-east-1重新定义aws cli,类似于部署新的   在us-east-1中完全是一个例子?

不,它根本不是那样的。

  

或者就像在us-west-1中有一个实例,但只是使用SNS   来自us-east-1的服务?

是的,这就是你所做的一切。您可以从Internet上的任何位置连接到任何AWS区域的API。它在特定区域的EC2实例上运行并不重要,只需要告诉SDK / CLI使用哪个区域。

您可以在本地计算机上运行相同的代码。显然,您的本地计算机未在AWS上运行,因此您必须告知代码将AWS调用发送到哪个AWS区域。你在做什么是一回事。

在EC2服务器上运行的代码不限于在EC2服务器所在的区域中使用AWS API。

答案 1 :(得分:0)

您是否在发布主题之前尝试创建主题?您应该尝试创建主题,然后发布到该主题。