簡體   English   中英

在us-west-1中部署ec2實例時使用AWS SNS

[英]Using AWS SNS when ec2 instance is deployed in us-west-1

我對使用AWS SNS有一個快速的問題。

我已經在us-west-1(N.California)中部署了一個EC2(t2.micro,Linux)實例。 我已經使用boto3編寫了python腳本,可以向手機發送一條簡單的短信。 后來我發現,沒有針對us-east-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配置中的“區域”和我的python腳本中的“區域”更改為“ us-east-1”時,我的腳本將一條短信推送到了手機中。 是不是很奇怪? 誰能解釋一下為什么僅通過更改AWS cli和我的python腳本中的區域就可以正常工作,盡管我的實例仍在us-west-1中,並且我在N.california地區的SNS儀表板上看不到“發布文本消息”選項?

用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是否類似於在us-east-1中完全部署新實例?

不,根本不是那樣。

還是就像在us-west-1中擁有一個實例,而只是使用us-east-1中的SNS服務?

是的,這就是您要做的。 您可以從Internet上的任何地方連接到任何AWS區域的API。 它在特定區域的EC2實例上運行無關緊要,只關系您告訴SDK / CLI使用的區域無關緊要。

您可以在本地計算機上運行相同的代碼。 顯然,您的本地計算機未在AWS上運行,因此您必須告訴代碼將API調用發送到哪個AWS區域。 你在做什么是一回事。

在EC2服務器上運行的代碼不限於在EC2服務器所在的區域中使用AWS API。

在發布主題之前,您是否嘗試過創建主題? 您應該嘗試創建一個主題,然后發布到該主題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM