1.准备:阿里云注册,新建用户并授权,获取appkey和secret,开通短信服务,申请资质签名模板,短信服务右下角openapi查看文档和下载实例,在线客服咨询遇到的问题
2.依赖引入:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.24</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-openapi</artifactId>
<version>0.3.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-console</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-util</artifactId>
<version>0.2.21</version>
</dependency>
3.代码:
public com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId("appkey")
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret("secret");
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
public void sendNationSms(String... args_) {
try {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.dysmsapi20170525.Client client = createClient();
com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest();
sendSmsRequest.setSignName(args.get(0));
sendSmsRequest.setPhoneNumbers(args.get(1));
sendSmsRequest.setTemplateCode(args.get(2));
sendSmsRequest.setTemplateParam(args.get(3));
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
com.aliyun.dysmsapi20170525.models.SendSmsResponse resp = client.sendSmsWithOptions(sendSmsRequest, runtime);
com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
4.疑难解答:
RAM_PERMISSION_DENY 是阿里云RAM(Resource Access Management)中的一个权限状态,表示RAM用户在尝试访问某个资源时被拒绝,通常是由于该用户没有足够的权限。RAM是阿里云提供的权限管理服务,它允许您控制不同用户、角色对资源的访问权限。
当RAM用户尝试执行某个操作时,如果其不具备执行该操作所需的权限,服务会返回RAM_PERMISSION_DENY的错误码或错误信息。这可能是因为:
1. 权限不足:RAM用户没有被授予执行该操作的权限,可能是由于角色权限设置不正确,或者没有明确赋予该用户相应的权限。
2. 资源权限问题:用户可能对特定资源没有访问权限,这需要检查资源的权限策略,确保用户被允许访问。
3. 策略冲突:如果用户同时拥有多个策略,可能存在一个策略允许访问,而另一个策略拒绝访问,导致权限冲突。
4. MFA要求:如果服务要求使用多因素认证(MFA)而用户未启用或未正确使用,也可能导致访问被拒绝。
要解决RAM_PERMISSION_DENY问题,需要检查和调整用户的权限策略,确保策略中包含了允许执行所需操作的语句。您可以登录阿里云控制台,通过RAM服务管理用户权限,或者联系管理员进行权限检查和配置。详细步骤和配置信息,可以参考阿里云官方文档管理RAM用户权限。
"SMS service is not activated" 表示短信服务未激活,这意味着您的阿里云账号尚未开启或配置短信服务。要解决这个问题,您可以按照以下步骤操作:
1. 确认服务开通:登录阿里云控制台,检查是否已经开通了短信服务。如果没有,您需要前往短信服务页面进行开通。
2. 账户权限检查:如果您是RAM用户,确保您的权限策略允许使用短信服务。如果权限不足,需要联系管理员为您添加相关权限。
3. 服务状态检查:在开通短信服务后,检查服务状态是否正常,是否存在欠费、服务暂停等情况。
4. 签名和模板审核:确保您的短信签名和模板已经审核通过。未通过审核的签名或模板将无法使用。您可以在短信服务控制台的签名管理或模板管理页面查看审核状态。
5. API调用检查:如果使用API发送短信,确保您使用了正确的AccessKey和AccessKey Secret,并且签名和模板代码正确无误。
请根据上述步骤进行检查和配置,若问题依然存在,请详细描述您的操作过程和遇到的具体问题,以便提供更精确的解决方案。
创建AccessKey
更新时间:2024年5月17日 09:49:14
本文为您介绍如何创建RAM用户和阿里云账号(主账号)的访问密钥(AccessKey)。
什么是AccessKey
访问密钥AccessKey(简称AK)是阿里云提供给用户的永久访问凭据,一组由AccessKey ID和AccessKey Secret组成的密钥对。
• AccessKey ID:用于标识用户。
• AccessKey Secret:是一个用于验证您拥有该AccessKey ID的密码。
AccessKey ID和AccessKey Secret根据算法由访问控制(RAM)生成,阿里云对AccessKey ID和AccessKey Secret的存储及传输均进行加密。
AccessKey不用于控制台登录,用于通过开发工具(API、CLI、SDK、Terraform等)访问阿里云时,发起的请求会携带AccessKey ID和AccessKey Secret加密请求内容生成的签名,进行身份验证及请求合法性校验。
重要
• 阿里云账号(主账号)默认拥有当前账号下所有云资源的Administrator权限,且无法修改。阿里云账号(主账号)的AccessKey泄露会威胁该账号下所有资源的安全。为保证账号安全,强烈建议您不要给阿里云账号(主账号)创建AccessKey,建议您创建专用于API访问的RAM用户并创建对应的AccessKey,完成最小化授权后,通过编程的方式访问阿里云资源。
• 不要将AccessKey ID和AccessKey Secret保存到工程代码里,避免AccessKey泄露。更多关于凭据的安全使用建议,请参见凭据的安全使用方案。
创建RAM用户的AccessKey
前提条件
您可以使用以下账号创建RAM用户的AccessKey:
• 阿里云账号(主账号)。
• RAM管理员(拥有AliyunRAMFullAccess权限的RAM用户)。
• 允许自主管理AccessKey的RAM用户。关于如何设置自主管理AccessKey的详情,请参见管理RAM用户安全设置。
使用限制
• RAM用户的AccessKey Secret只在创建时显示,不支持查看,请妥善保管。如果AccessKey泄露或丢失,请删除并创建新的AccessKey。
• 每个RAM用户最多允许创建2个AccessKey。
操作步骤
1. 登录RAM控制台。
2. 在左侧导航栏,选择身份管理 > 用户。
3. 在用户页面,单击目标RAM用户名称。
4. 在认证管理页签下的AccessKey区域,单击创建AccessKey。
5. 根据界面提示完成安全验证。
6. 在创建AccessKey对话框,查看AccessKey ID和AccessKey Secret。
您可以单击下载CSV文件,下载AccessKey信息。单击复制,复制AccessKey信息。
7. 单击确定。
创建阿里云账号(主账号)的AccessKey
使用限制
• 2023年11月20日起阿里云账号(主账号)AccessKey不支持创建后再次查看AccessKey Secret。2023年7月5日前创建的阿里云账号(主账号)AccessKey尚未签署知情同意书的,控制台提供最后一次保存和下载的功能,确认保存后不能再次查看。
• 每个阿里云账号(主账号)最多允许创建5个AccessKey。
操作步骤
1. 使用阿里云账号(主账号)登录阿里云控制台。
2. 将鼠标悬浮在右上方的账号图标上,单击AccessKey管理。
3. 在安全提示对话框,阅读安全提示信息,然后单击继续使用AccessKey。
4. 在AccessKey页面,单击创建AccessKey。
5. 根据界面提示完成安全验证。
6. 在创建AccessKey对话框,查看AccessKey ID和AccessKey Secret。
您可以单击下载CSV文件,下载AccessKey信息。单击复制,复制AccessKey信息。
7. 选中我已保存好AccessKey Secret。
8. 单击确定。
相关文档
• 不使用主账号AccessKey
• 定期轮转RAM用户AccessKey
• 清理RAM用户的闲置AccessKey
• RAM用户不能同时启用两个AccessKey
• 访问密钥(AccessKey)常见问题
• 凭据的安全使用方案
• 使用访问凭证访问阿里云OpenAPI最佳实践
• AccessKey泄露处理方案
开通阿里云短信服务,您需要拥有一个阿里云账号并完成实名认证。然后,您可以按照以下步骤操作:
1. 登录阿里云控制台:首先访问阿里云官网,使用您的账号登录。
2. 进入短信服务控制台:在顶部搜索框中输入"短信服务"或直接访问短信服务控制台。
3. 开通服务:如果您是首次使用,系统会引导您开通短信服务。点击"立即开通"或相应按钮,按照页面提示完成开通流程。
4. 获取AccessKey:开通服务后,您需要AccessKey来调用短信服务API。您可以:
• 查看AccessKey:访问AccessKey查看。
• 创建AccessKey:访问创建AccessKey。
5. 配置短信模板和签名:在控制台中,您需要创建短信签名和模板,这些是发送短信的前提。
6. 开始使用:完成以上步骤后,您就可以在您的应用程序中使用阿里云短信服务SDK来发送短信了。
请确保遵循阿里云的服务条款和相关的法律法规,以确保短信服务的合规使用。如果您在操作过程中遇到任何问题,可以随时联系阿里云客服获取帮助。
国内短信接口使用 SendSms - 发送短信 SendBatchSms - 批量发送短信
(全文完)