package sms
import (
"context"
"github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/sns")
type AwsSnsClient struct {
sns *sns.Client
}
// NewAwsSnsClient 创建Sns客户端
func NewAwsSnsClient(id, secret, region string) (*AwsSnsClient, error) {
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithCredentialsProvider(credentials.StaticCredentialsProvider{
Value: aws.Credentials{
AccessKeyID: id, SecretAccessKey: secret,
},
}), config.WithRegion(region))
if err != nil {
return nil, err
}
return &AwsSnsClient{sns: sns.NewFromConfig(cfg)}, nil
}
// Send 发送短信
func (client *AwsSnsClient) Send(phone, msg string) error {
_, err := client.sns.Publish(context.TODO(), &sns.PublishInput{
Message: aws.String(msg),
MessageStructure: aws.String("text"),
PhoneNumber: aws.String(phone),
})
if err != nil {
return err
}
return nil
}
- 先在 用户添加SNS权限
- 在Amazon SNS的左侧栏中找到SMS选项(只有特定的国家才会显示,国内账号不会显示)
- 进到SMS后可以添加号码到沙盒
- 已验证发送地为国内时不支持,发送地为新加坡支持,但发送地为新加坡时,目标地址为国内不行
- 发送支持的地区可以查询