AWS Java SDK: 创建角色和Lambda,Lambda无法扮演角色
创始人
2024-11-16 13:01:30
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()

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...