【 函数计算,求函数代码使用sts?
】
在阿里云函数计算中,STS(Security Token Service)主要用于实现跨账户资源共享和权限控制。如果你希望在函数代码中使用STS,你需要遵循以下步骤: 1.配置STS:首先,
你
需要在阿里云控制台中启用STS服务,并配置相应的权限。例如,您可以授权STS访问您希望在函数中使用的其他阿里云服务(如OSS、RDS等)。 2.创建并配置IAM
角色:
要使用STS,您需要为您的函数计算服务创建一个IAM角色,并将其与STS关联。在阿里云控制台中,选择“IAM服务”,然后创建一个新角色。在创建角色时,您需要为角色配置适当的权限,以便可以访问您希望在函数中使用的其他阿里云服务。 3.在函数代码中
使用STS:
在函数计算服务的代码中,您可以使用STS SDK来获取访问其他阿里云服务云服务的临时安全令牌。在函数代码的开始,引入STS SDK,并使用IAM角色的AccessKey和SecretKey进行初始化。然后,你可以使用SDK的方法来获取临时安全令牌,并在后续请求中使用该令牌进行身份验证。
以下是一个使用Python语言和阿里云STS SDK的示例:
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from aliyunsdksts.request.v20180823 import GetCallerIdentityRequest
def main_handler(event, context):
# 初始化 STS 客户端
client = AcsClient(access_key_id=os.environ['ACCESS_KEY_ID'],
secret_access_key=os.environ['SECRET_ACCESS_KEY'],
region_id='cn-hangzhou')
# 获取当前账户的临时安全令牌
response = client.do_action_with_exception(GetCallerIdentityRequest())
temp_token = response.result.get('TempToken')
# 在后续请求中使用临时安全令牌进行身份验证
#...
if name == 'main':
main_handler({}, {})
函数计算中的入口参数 context.credentials, 是根据您在service 上配置的 role 生成的临时 token, 您的 role 具有什么权限, 这个 token 就具有什么权限, 因此可以在函数代码中使用这个参数, 从而避免在代码明文中使用 AK
Aliyun OpenAPI
from aliyunsdkcore import client
from aliyunsdkcore.auth.credentials import StsTokenCredential
def handler(event, context):
creds = context.credentials
sts_token_credential = StsTokenCredential(creds.access_key_id, creds.access_key_secret, creds.security_token)
clt = client.AcsClient(region_id="cn-hangzhou", credential=sts_token_credential)
call aliyun open api do something
FC
def handler(event, context):
creds = context.credentials
client = fc2.Client(
endpoint=,
accessKeyID=creds.access_key_id,
accessKeySecret=creds.access_key_secret,
securityToken=creds.security_token,
)
r = client.invoke_function(self.serviceName, helloWorld)
...
OSS
import json
import oss2
def my_handler(event, context):
creds = context.credentials
auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
bucket = oss2.Bucket(auth, , )
...
此答案来自钉钉群“阿里函数计算官网客户"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。