AWS Java SDK: 创建角色和Lambda,Lambda无法扮演角色
创始人
2024-11-16 13:00:39
0

要解决“AWS Java SDK: 创建角色和Lambda,Lambda无法扮演角色”的问题,您可以使用以下代码示例:

import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagement;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagementClientBuilder;
import com.amazonaws.services.identitymanagement.model.CreateRoleRequest;
import com.amazonaws.services.identitymanagement.model.CreateRoleResult;
import com.amazonaws.services.identitymanagement.model.EntityAlreadyExistsException;
import com.amazonaws.services.identitymanagement.model.GetRoleRequest;
import com.amazonaws.services.identitymanagement.model.GetRoleResult;
import com.amazonaws.services.identitymanagement.model.NoSuchEntityException;
import com.amazonaws.services.lambda.AWSLambda;
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.AddPermissionRequest;
import com.amazonaws.services.lambda.model.AddPermissionResult;
import com.amazonaws.services.lambda.model.CreateFunctionRequest;
import com.amazonaws.services.lambda.model.CreateFunctionResult;
import com.amazonaws.services.lambda.model.FunctionCode;
import com.amazonaws.services.lambda.model.FunctionConfiguration;
import com.amazonaws.services.lambda.model.GetFunctionRequest;
import com.amazonaws.services.lambda.model.GetFunctionResult;
import com.amazonaws.services.lambda.model.ResourceConflictException;
import com.amazonaws.services.lambda.model.Role;
import com.amazonaws.services.lambda.model.UpdateFunctionConfigurationRequest;
import com.amazonaws.services.lambda.model.UpdateFunctionConfigurationResult;

public class LambdaRoleExample {
    
    private static final String AWS_ACCESS_KEY = "your-access-key";
    private static final String AWS_SECRET_KEY = "your-secret-key";
    private static final String IAM_ROLE_NAME = "your-iam-role-name";
    private static final String LAMBDA_FUNCTION_NAME = "your-lambda-function-name";
    private static final String LAMBDA_FUNCTION_HANDLER = "your-lambda-function-handler";
    private static final String LAMBDA_FUNCTION_RUNTIME = "your-lambda-function-runtime";
    private static final String LAMBDA_FUNCTION_CODE = "your-lambda-function-code";
    
    public static void main(String[] args) {
        // 创建IAM角色
        createIAMRole();
        
        // 创建Lambda函数
        createLambdaFunction();
        
        // 更新Lambda函数配置
        updateLambdaFunctionConfiguration();
    }
    
    private static void createIAMRole() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
        AmazonIdentityManagement iamClient = AmazonIdentityManagementClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                .withRegion(Regions.DEFAULT_REGION)
                .build();
        
        CreateRoleRequest createRoleRequest = new CreateRoleRequest()
                .withRoleName(IAM_ROLE_NAME)
                .withAssumeRolePolicyDocument("{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}");
        
        try {
            CreateRoleResult createRoleResult = iamClient.createRole(createRoleRequest);
            System.out.println("IAM Role ARN: " + createRoleResult.getRole().getArn());
        } catch (EntityAlreadyExistsException e) {
            System.out.println("IAM Role already exists.");
        } catch (AmazonClientException e) {
            System.out.println("Failed to create IAM Role: " + e.getMessage());
        }
    }
    
    private static void createLambdaFunction() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
        AWSLambda lambdaClient = AWSLambdaClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                .withRegion(Regions.DEFAULT_REGION)
                .build();
        
        CreateFunctionRequest createFunctionRequest = new CreateFunctionRequest()
                .withFunctionName(LAMBDA_FUNCTION_NAME)
                .withHandler(LAMBDA_FUNCTION_HANDLER)
                .withRuntime(LAMBDA_FUNCTION_RUNTIME)
                .withCode(new FunctionCode().withZipFile(LAMBDA_FUNCTION_CODE))
                .withRole("arn:aws:iam::your-account-id:role/" + IAM_ROLE_NAME);
        
        try {
            CreateFunctionResult createFunctionResult = lambdaClient.createFunction(createFunctionRequest);
            System.out.println("Lambda Function ARN: " + createFunctionResult.getFunctionArn());
        } catch (ResourceConflictException e) {
            System.out.println("Lambda Function already exists.");
        } catch (AmazonClientException e) {
            System.out.println("Failed to create Lambda Function: " + e.getMessage());
        }
    }
    
    private static void updateLambdaFunctionConfiguration() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
        AWSLambda lambdaClient = AWSLambdaClientBuilder.standard()

相关内容

热门资讯

2026版复盘!小程序中至赣牌... 2026版复盘!小程序中至赣牌圈黑科技,友空互娱插件-竟然确实有辅助攻略(哔哩哔哩)1、在小程序中至...
现有说明如下!欢乐达人暗宝辅助... 现有说明如下!欢乐达人暗宝辅助,黑桃a3哟西破解版-总是是有辅助神器(哔哩哔哩);1、全新机制【欢乐...
第三方技巧!手机游戏挂机辅助软... 第三方技巧!手机游戏挂机辅助软件,心悦游戏辅助-果然存在有辅助神器(哔哩哔哩)1、在手机游戏挂机辅助...
透视讲解!创乐源辅助软件,越乡... 透视讲解!创乐源辅助软件,越乡游辅助器-果然是有辅助脚本(哔哩哔哩)1、游戏颠覆性的策略玩法,独创攻...
第三方辅助!玉海楼茶苑辅助器,... 第三方辅助!玉海楼茶苑辅助器,浙江宝宝游戏辅助器是真的嘛-确实真的是有辅助器(哔哩哔哩)1、打开软件...
透视讲解!微乐家乡app下载,... 透视讲解!微乐家乡app下载,wepoker辅助脚本-真是存在有辅助方法(哔哩哔哩)在进入微乐家乡a...
透视好友!哈灵脚本辅助最简单三... 透视好友!哈灵脚本辅助最简单三个步骤,朱雀开心罗松怎么开挂-一贯确实有辅助器(哔哩哔哩)1、哈灵脚本...
透视免费!多乐辅助器使用方法,... 透视免费!多乐辅助器使用方法,多乐跑辅助-原来真的是有辅助器(哔哩哔哩)1、实时多乐辅助器使用方法透...
透视挂!榕城50k辅助,闲逸辅... 透视挂!榕城50k辅助,闲逸辅助软件-都是是真的有辅助脚本(哔哩哔哩)所有人都在同一条线上,像星星一...
日前!逍遥卡五星内购破解,情怀... 日前!逍遥卡五星内购破解,情怀游戏辅助器破解版-其实是有辅助工具(哔哩哔哩)亲,关键说明,情怀游戏辅...