Amazon web services 在us-west-1中部署ec2实例时使用AWS SNS

Amazon web services 在us-west-1中部署ec2实例时使用AWS SNS,amazon-web-services,amazon-sns,Amazon Web Services,Amazon Sns,我有一个关于AWS SNS使用的快速问题 我已经在加利福尼亚州的us-west-1部署了一个EC2 t2.micro Linux实例。我已经编写了一个python脚本,使用boto3向我的手机发送一条简单的文本消息。后来我发现,对于部署在美国东北1号弗吉尼亚州以外的实例,没有SNS服务。到目前为止,这是有意义的,因为我在执行python脚本时看到下面的错误,因为在aws configure aws cli和python脚本中,该区域被定义为us-west-1 botocore.errorfact

我有一个关于AWS SNS使用的快速问题

我已经在加利福尼亚州的us-west-1部署了一个EC2 t2.micro Linux实例。我已经编写了一个python脚本,使用boto3向我的手机发送一条简单的文本消息。后来我发现,对于部署在美国东北1号弗吉尼亚州以外的实例,没有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中的区域和python脚本中的区域更改为us-east-1时,我的脚本将文本消息推送到我的手机上。这不是很奇怪吗?尽管我的实例仍在us-west-1中,而且我在N.california region的SNS仪表板上没有看到“发布文本消息”选项,但有人能解释一下为什么仅通过在AWS cli和我的python脚本中更改区域就可以做到这一点吗

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

这是我的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()

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

使用us-east-1重新定义aws cli是否与部署新的 在美国东部1区共有一例

不,根本不是那样的

或者,这就像在美国西部1号有一个实例,但只是使用SNS 美国东一号的服务

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

您可以在本地计算机上运行相同的代码。显然,您的本地计算机没有在AWS上运行,因此您必须告诉代码要将API调用发送到哪个AWS区域。你在做的是同一件事


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

我没有创建任何主题。您无需创建主题即可将SNS消息发布到单个电话号码EAH..这很有意义。谢谢你解释@Mark B