

第 4 版 (V4) 適用於 .NET 的 AWS SDK 已發行！

如需有關中斷變更和遷移應用程式的資訊，請參閱[遷移主題](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用註釋撰寫 AWS Lambda 函數
<a name="aws-lambda-annotations"></a>

撰寫 Lambda 函數時，有時需要撰寫大量處理常式程式碼和更新 AWS CloudFormation 範本，以及其他任務。Lambda Annotations 是一種架構，可協助減輕 .NET 6 Lambda 函數的這些負擔，從而使編寫 Lambda 的體驗在 C\$1 中更自然。

使用 Lambda 註釋架構的好處範例是，請考慮下列程式碼片段，這些程式碼片段會新增兩個數字。

**沒有 Lambda 註釋**

```
public class Functions
{
    public APIGatewayProxyResponse LambdaMathPlus(APIGatewayProxyRequest request, ILambdaContext context)
    {
        if (!request.PathParameters.TryGetValue("x", out var xs))
        {
            return new APIGatewayProxyResponse
            {
                StatusCode = (int)HttpStatusCode.BadRequest
            };
        }
        if (!request.PathParameters.TryGetValue("y", out var ys))
        {
            return new APIGatewayProxyResponse
            {
                StatusCode = (int)HttpStatusCode.BadRequest
            };
        }

        var x = int.Parse(xs);
        var y = int.Parse(ys);

        return new APIGatewayProxyResponse
        {
            StatusCode = (int)HttpStatusCode.OK,
            Body = (x + y).ToString(),
            Headers = new Dictionary<string, string> { { "Content-Type", "text/plain" } }
        };
    } 
}
```

**使用 Lambda 註釋**

```
public class Functions
{
    [LambdaFunction]
    [RestApi("/plus/{x}/{y}")]
    public int Plus(int x, int y)
    {
        return x + y;
    }
}
```

如範例所示，Lambda Annotations 可以消除特定沸騰板程式碼的需求。

如需如何使用架構的詳細資訊以及其他資訊，請參閱下列資源：
+ 有關 Lambda 註釋APIs 和屬性的文件的 [GitHub README](https://github.com/aws/aws-lambda-dotnet/blob/master/Libraries/src/Amazon.Lambda.Annotations/README.md)。
+ Lambda 註釋的 [部落格文章](https://aws.amazon.com/blogs/developer/net-lambda-annotations-framework/)。
+ [https://www.nuget.org/packages/Amazon.Lambda.Annotations](https://www.nuget.org/packages/Amazon.Lambda.Annotations) NuGet 套件。
+ GitHub 上的[相片資產管理專案](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/cross-service/PhotoAssetManager)。具體而言，請參閱專案 [README](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/dotnetv3/cross-service/PhotoAssetManager/README.md) 中的 [PamApiAnnotations](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/cross-service/PhotoAssetManager/PamApiAnnotations) 資料夾和 Lambda Annotations 參考。
**注意**  
上述範例專屬於 的 V3 適用於 .NET 的 AWS SDK。如果您使用範例搭配開發套件的 V4 （最新版本），您可能需要根據 中的資訊進行調整[遷移至第 4 版](net-dg-v4.md)。