
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
AWS::Lambda镜像基于lambci/lambda构建,旨在简化Perl脚本在AWS Lambda中的运行。通过预构建的Lambda层、Docker本地测试环境及配套工具,开发者可快速开发、部署和调试Perl语言的AWS Lambda函数,支持AWS ***请求追踪和Paws(Perl AWS SDK)调用AWS服务。
AWS::XRay模块,支持请求追踪和性能分析适用于需要在AWS Lambda中运行Perl代码的开发者,特别是:
创建Perl处理函数handler.pl:
perlsub handle { my ($payload, $context) = @_; return $payload; }
打包代码:
bashzip handler.zip handler.pl
使用AWS CLI创建Lambda函数:
bashaws --region "$REGION" --profile "$PROFILE" lambda create-function \ --function-name "hello-perl" \ --zip-file "fileb://handler.zip" \ --handler "handler.handle" \ --runtime provided.al2 \ --role arn:aws:iam::xxxxxxxxxxxx:role/service-role/lambda-custom-runtime-perl-role \ --layers "arn:aws:lambda:$REGION:445285296882:layer:perl-5-32-runtime-al2:1"
控制台部署步骤
获取层ARN
通过代码获取:
perluse AWS::Lambda; my $info = AWS::Lambda::get_layer_info_al2( "5.32", # Perl版本 "us-east-1", # 区域 ); say $info->{runtime_arn}; # 运行时层ARN say $info->{paws_arn}; # Paws SDK层ARN
通过命令行获取:
bash# 获取运行时层ARN perl -MAWS::Lambda -e 'AWS::Lambda::print_runtime_arn_al2("5.32", "us-east-1")' # 获取Paws层ARN perl -MAWS::Lambda -e 'AWS::Lambda::print_paws_arn_al2("5.32", "us-east-1")'
Perl 5.32运行时层ARN列表(Amazon Linux 2)
arn:aws:lambda:af-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:me-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-east-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-east-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-west-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-west-2:445285296882:layer:perl-5-32-runtime-al2:1安装依赖
bashdocker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:build-5.32.al2 \ cpanm --notest --local-lib extlocal --no-man-pages --installdeps .
触发事件测试
bashdocker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:5.32.al2 \ handler.handle '{"some":"event"}'
通过AWS::XRay模块实现请求追踪:
perluse utf8; use warnings; use strict; use AWS::XRay qw/ capture /; sub handle { my ($payload, $context) = @_; capture "myApp" => sub { capture "nested" => sub { # 业务逻辑... }; }; capture "another" => sub { # 业务逻辑... }; return; } 1;
Paws是Perl的AWS SDK,可通过预构建层快速集成。
使用Paws层创建函数
bashaws --region "$REGION" --profile "$PROFILE" lambda create-function \ --function-name "hello-perl-paws" \ --zip-file "fileb://handler.zip" \ --handler "handler.handle" \ --runtime provided.al2 \ --role arn:aws:iam::xxxxxxxxxxxx:role/service-role/lambda-custom-runtime-perl-role \ --layers \ "arn:aws:lambda:$REGION:445285296882:layer:perl-5-32-runtime-al2:1" \ "arn:aws:lambda:$REGION:445285296882:layer:perl-5-32-paws-al2:1"
Paws代码示例
perluse Paws; my $s3 = Paws->service('S3'); my $buckets = $s3->ListBuckets(); return { buckets => [map { $_->Name } @{$buckets->Buckets}] };
本地Paws开发
bash# 安装依赖 docker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:build-5.32-paws.al2 \ cpanm --notest --local-lib extlocal --no-man-pages --installdeps . # 运行测试 docker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:5.32-paws.al2 \ handler.handle '{"some":"event"}'
将自定义Perl模块打包为Lambda层:
bash# 创建Some::Module层 docker run --rm \ -v $(PWD):/var/task \ -v $(PATH_TO_LAYER_DIR)/lib/perl5/site_perl:/opt/lib/perl5/site_perl \ shogo82148/p5-aws-lambda:build-5.32.al2 \ cpanm --notest --no-man-pages Some::Module # 打包层 cd $(PATH_TO_LAYER_DIR) && zip -9 -r $(PATH_TO_DIST)/some-module.zip .
提供基于旧版Amazon Linux(runtime=provided)的层,支持Perl 5.32/5.30/5.28/5.26,层ARN格式:
arn:aws:lambda:$REGION:445285296882:layer:perl-$VERSION-runtime:$VERSIONarn:aws:lambda:$REGION:445285296882:layer:perl-$VERSION-paws:$VERSIONMIT许可证(MIT)
版权所有 (C) Ichinose Shogo。
Ichinose Shogo <***>
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务