

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用.NET 核心 CLI 部署 AWS Lambda 项目
<a name="lambda-cli-publish"></a>

 AWS Toolkit for Visual Studio 包括 Visual Studio 的 AWS Lambda .NET 核心项目模板。您可以使用 .NET Core 命令行界面（CLI）部署 Visual Studio 中构建的 Lambda 函数。

**Topics**
+ [先决条件](#lambda-cli-prereqs)
+ [相关主题](#lambda-cli-related)
+ [列出可通过 .NET Core CLI 使用的 Lambda 命令](#listing-the-lam-commands-available-through-the-cli)
+ [从 .NET Core CLI 发布 .NET Core Lambda 项目](#publishing-a-net-core-lam-project-from-the-net-core-cli)

## 先决条件
<a name="lambda-cli-prereqs"></a>

在使用.NET Core CLI 部署 Lambda 函数之前，您必须满足以下先决条件：
+ 确保安装了 Visual Studio 2015 更新 3。
+ 安装了 [适用于 Windows 的 .NET Core](https://dotnet.microsoft.com/download#windowsvs2015)。
+ 将 .NET Core CLI 设置为可与 Lambda 配合使用。有关更多信息，请参阅《AWS Lambda 开发人员指南》**中的 [.NET Core CLI](https://docs.aws.amazon.com//lambda/latest/dg/csharp-package-cli.html)。
+ 安装了 Toolkit for Visual Studio。有关更多信息，请参阅 [正在安装 AWS Toolkit for Visual Studio](setup.md#install)。

## 相关主题
<a name="lambda-cli-related"></a>

使用 .NET Core CLI 部署 Lambda 函数时，以下相关主题可能会有所帮助：
+ 有关 Lambda 函数的更多信息，请参阅[什么是 Lambda AWS ？](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 在《*AWS Lambda 开发人员指南》*中。
+ 有关在 Visual Studio 中创建 Lambda 函数的信息，请参阅 [AWS Lambda](lambda-index.md)。
+ 有关 Microsoft .NET Core 的更多信息，请参阅 Microsoft 在线文档中的 [.NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/)。

## 列出可通过 .NET Core CLI 使用的 Lambda 命令
<a name="listing-the-lam-commands-available-through-the-cli"></a>

要列出可通过 .NET Core CLI 使用的 Lambda 命令，请执行以下操作。

1. 打开命令提示符窗口并导航到包含 Visual Studio .NET Core Lambda 项目的文件夹。

1. 输入 `dotnet lambda --help`。

```
C:\Lambda\AWSLambda1\AWSLambda1>dotnet lambda --help AWS Lambda Tools for .NET Core functions
    Project Home: https://github.com/aws/aws-lambda-dotnet
    .
    Commands to deploy and manage Lambda functions:
    .
            deploy-function         Deploy the project to Lambda
            invoke-function         Invoke the function in Lambda with an optional input
            list-functions          List all of your Lambda functions
            delete-function         Delete a Lambda function
            get-function-config     Get the current runtime configuration for a Lambda function
            update-function-config  Update the runtime configuration for a Lambda function
    .
    Commands to deploy and manage AWS serverless applications using AWS CloudFormation:
    .
            deploy-serverless       Deploy an AWS serverless application
            list-serverless         List all of your AWS serverless applications
            delete-serverless       Delete an AWS serverless application
    .
    Other Commands:
    .
            package                 Package a Lambda project into a .zip file ready for deployment
    .
    To get help on individual commands, run the following:

            dotnet lambda help <command>
```

## 从 .NET Core CLI 发布 .NET Core Lambda 项目
<a name="publishing-a-net-core-lam-project-from-the-net-core-cli"></a>

以下说明假设你已在 Visual Studio 中创建了一个 AWS Lambda .NET 核心函数。

1. 打开命令提示符窗口并导航到包含 Visual Studio .NET Core Lambda 项目的文件夹。

1. 输入 `dotnet lambda deploy-function`。

1. 当系统提示时，输入要部署的函数的名称。它可以是新名称或现有函数的名称。

1. 出现提示时，输入 AWS 区域（您的 Lambda 函数将部署到的区域）。

1. 当系统提示时，选择或创建 Lambda 将在执行函数时代入的 IAM 角色。

成功完成后，将显示消息 **New Lambda function created (新 Lambda 函数已创建)**。

```
C:\Lambda\AWSLambda1\AWSLambda1>dotnet lambda deploy-function
Executing publish command
... invoking 'dotnet publish', working folder 'C:\Lambda\AWSLambda1\AWSLambda1\bin\Release\netcoreapp1.0\publish'
... publish: Publishing AWSLambda1 for .NETCoreApp,Version=v1.0
... publish: Project AWSLambda1 (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
... publish: Compiling AWSLambda1 for .NETCoreApp,Version=v1.0
... publish: Compilation succeeded.
... publish:     0 Warning(s)
... publish:     0 Error(s)
... publish: Time elapsed 00:00:01.2479713
... publish:
... publish: publish: Published to C:\Lambda\AWSLambda1\AWSLambda1\bin\Release\netcoreapp1.0\publish
... publish: Published 1/1 projects successfully
Zipping publish folder C:\Lambda\AWSLambda1\AWSLambda1\bin\Release\netcoreapp1.0\publish to C:\Lambda\AWSLambda1\AWSLamb
da1\bin\Release\netcoreapp1.0\AWSLambda1.zip
Enter Function Name: (AWS Lambda function name)
DotNetCoreLambdaTest
Enter AWS Region: (The region to connect to AWS services)
us-west-2
Creating new Lambda function
Select IAM Role that Lambda will assume when executing function:
    1) lambda_exec_LambdaCoreFunction
    2) *** Create new IAM Role ***
1
New Lambda function created
```

如果您部署现有函数，则部署函数仅要求提供 AWS 区域。

```
C:\Lambda\AWSLambda1\AWSLambda1>dotnet lambda deploy-function
Executing publish command
Deleted previous publish folder
... invoking 'dotnet publish', working folder 'C:\Lambda\AWSLambda1\AWSLambda1\bin\Release\netcoreapp1.0\publish'
... publish: Publishing AWSLambda1 for .NETCoreApp,Version=v1.0
... publish: Project AWSLambda1 (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
... publish: publish: Published to C:\Lambda\AWSLambda1\AWSLambda1\bin\Release\netcoreapp1.0\publish
... publish: Published 1/1 projects successfully
Zipping publish folder C:\Lambda\AWSLambda1\AWSLambda1\bin\Release\netcoreapp1.0\publish to C:\Lambda\AWSLambda1\AWSLamb
da1\bin\Release\netcoreapp1.0\AWSLambda1.zip
Enter Function Name: (AWS Lambda function name)
DotNetCoreLambdaTest
Enter AWS Region: (The region to connect to AWS services)
us-west-2
Updating code for existing function
```

在部署 Lambda 函数后，便可使用该函数。有关更多信息，请参阅[如何使用 AWS Lambda 的示例](https://docs.aws.amazon.com/lambda/latest/dg/use-cases.html)。

Lambda 会自动为您监控 Lambda 函数，并通过亚马逊报告指标。 CloudWatch要监控您的 Lambda 函数并对其进行故障排除，请参阅使用亚马逊对 [Lambda AWS 函数进行故障排除和](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html)监控。 CloudWatch