如何访问弗吉尼亚区域S3 Bucket并将Jar包上传至俄亥俄区域Lambda函数
跨区域访问S3桶并上传Jar包到Lambda的方案
前提:配置必要的IAM权限
Lambda的执行角色(或你用来操作的IAM用户/角色)必须拥有访问弗吉尼亚(us-east-1)S3桶的权限,至少需要s3:GetObject操作权限。示例政策如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-virginia-bucket-name/*" } ] }
方法1:通过AWS控制台操作
- 登录AWS控制台,切换到俄亥俄(us-east-2)区域的Lambda服务页面。
- 点击“创建函数”,选择合适的函数创建方式(比如“从头开始创作”)。
- 在“函数代码”部分,选择“从S3上传”,输入弗吉尼亚S3桶中Jar包的完整路径,格式为:
s3://your-virginia-bucket-name/path/to/your-function.jar。 - 完成其他配置(运行时、角色等)后,点击“创建函数”即可——Lambda会自动跨区域从指定S3桶拉取Jar包完成部署。
方法2:使用AWS CLI命令
创建新函数
运行以下命令,替换占位符为你的实际信息:
aws lambda create-function \ --function-name your-function-name \ --runtime java17 \ # 根据你的Jar包运行时调整,比如java8、java11等 --role arn:aws:iam::your-account-id:role/your-lambda-execution-role \ --handler com.example.YourHandlerClass::handleRequest \ --code S3Bucket=your-virginia-bucket-name,S3Key=path/to/your-function.jar,S3Region=us-east-1 \ --region us-east-2
更新现有函数代码
如果是给已有的俄亥俄Lambda函数更新代码,用这条命令:
aws lambda update-function-code \ --function-name your-function-name \ --s3-bucket your-virginia-bucket-name \ --s3-key path/to/your-function.jar \ --s3-region us-east-1 \ --region us-east-2
可选优化:复制Jar包到俄亥俄本地S3桶
如果Jar包体积较大,跨区域拉取可能耗时较长,建议先把Jar包复制到俄亥俄区域的S3桶,再从本地桶上传到Lambda:
aws s3 cp \ s3://your-virginia-bucket-name/path/to/your-function.jar \ s3://your-ohio-bucket-name/path/to/your-function.jar \ --source-region us-east-1 \ --region us-east-2
之后再通过控制台或CLI从俄亥俄的S3桶上传代码,能提升部署速度。
内容的提问来源于stack exchange,提问作者Dharmarao Katkuri
相关产品推荐
相关产品推荐

