Lambda 部署

此页面记录了使用 dpl v1 进行部署,当前版本为默认版本。下一个主要版本 dpl v2 将很快发布,我们建议您开始使用它。有关详细信息,请参阅 我们的博客文章。您可以在 此处找到 dpl v2 文档

Travis CI 支持上传到 AWS Lambda

最小配置如下

deploy:
  provider: lambda
  function_name: "lambda-test"
  region: "us-east-1"
  role: "arn:aws:iam::0123456789012:role/lambda_basic_execution"
  runtime: "nodejs4.3"
  handler_name: "handler"

可以通过 access_key_idsecret_access_key 参数传递 AWS 凭据。如果未设置这些参数,Travis 将回退到标准 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量。如果您选择提供参数,建议您加密您的密钥。假设您已安装 Travis CI 命令行客户端,您可以按如下方式执行此操作

$ travis encrypt "AWS SECRET ACCESS KEY" --add deploy.secret_access_key

系统将提示您在命令行中输入您的密钥。

可选配置参数 #

有关其他配置参数,请参阅 文档

条件发布 #

只有在满足特定条件时,您才能进行部署。请参阅 使用 on: 进行条件发布

AWS 权限 #

Travis 用于部署的 AWS 用户必须具有以下 IAM 权限才能进行部署

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListExistingRolesAndPolicies",
            "Effect": "Allow",
            "Action": [
                "iam:ListRolePolicies",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateAndListFunctions",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:ListFunctions"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DeployCode",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Resource": [
                "arn:aws:lambda:<region>:<account-id>:function:<name-of-function>"
            ]
        },
        {
           "Sid": "SetRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::<account-id>:role/<name-of-role>"
        }
    ]
}

似乎无法使用通配符 DeployCode 语句,以便 Travis 通过将资源指定为 arn:aws:lambda:<region>:<account-id>:function:* 来部署特定区域中的任何函数,但可以通过将完整 ARN 指定为一个或多个函数来限制每个函数的部署权限,例如 arn:aws:lambda:<region>:<account-id>:function:<name>