

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

# CloudFormation 指定时AWS::Serverless::Function生成的资源
<a name="sam-specification-generated-resources-function"></a>

指定`AWS::Serverless::Function`时， AWS Serverless Application Model (AWS SAM) 始终会创建`AWS::Lambda::Function`基础 CloudFormation 资源。

**`AWS::Lambda::Function`**  
*`LogicalId`: *`<function‑LogicalId>`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

除此 CloudFormation 资源外，如果指定了`AWS::Serverless::Function`此资源， AWS SAM 还会生成用于以下场景的 CloudFormation 资源。

**Topics**
+ [

## 核心函数属性
](#sam-specification-generated-resources-function-core-properties)
+ [

## 事件源
](#sam-specification-generated-resources-function-event-sources)
+ [

## 事件配置
](#sam-specification-generated-resources-function-event-configuration)

## 核心函数属性
<a name="sam-specification-generated-resources-function-core-properties"></a>

以下场景基于核心功能属性生成 CloudFormation 资源：

### 未指定 Role 属性
<a name="sam-specification-generated-resources-function-not-role"></a>

如果*未*指定 a `AWS::Serverless::Function` 的`Role`属性，则 AWS SAM 会生成`AWS::IAM::Role` CloudFormation 资源。

**`AWS::IAM::Role`**  
*`LogicalId`: *`<function‑LogicalId>Role`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

### AutoPublishAlias 属性已指定
<a name="sam-specification-generated-resources-function-autopublishalias"></a>

当指定了的`AutoPublishAlias`属性`AWS::Serverless::Function`时， AWS SAM 会生成以下 CloudFormation 资源：`AWS::Lambda::Alias`和`AWS::Lambda::Version`。

**`AWS::Lambda::Alias`**  
*`LogicalId`: *`<function‑LogicalId>Alias<alias‑name>`  
`<alias‑name>` 是 `AutoPublishAlias` 将被设置为的字符串。例如，如果设置为 `AutoPublishAlias``live`，则`LogicalId`为：*MyFunction*别名*live*。  
*可引用属性：*`<function‑LogicalId>.Alias`

**`AWS::Lambda::Version`**  
*`LogicalId`: *`<function‑LogicalId>Version<sha>`  
`<sha>` 是在创建堆栈时生成的唯一哈希值。例如，*MyFunction*版本*926eeb5ff1*。  
*可引用属性：*`<function‑LogicalId>.Version`

有关该`AutoPublishAlias`属性的更多信息，请参阅的 “[属性” 部分 AWS::Serverless::Function](sam-resource-function.md#sam-resource-function-properties)。

### DeploymentPreference 属性已指定
<a name="sam-specification-generated-resources-function-deploymentpreference"></a>

当指定了的`DeploymentPreference`属性`AWS::Serverless::Function`时， AWS SAM 会生成以下资源 CloudFormation 资源：`AWS::CodeDeploy::Application`和`AWS::CodeDeploy::DeploymentGroup`。此外，如果*未*指定`DeploymentPreference`对象的`Role`属性， AWS SAM 还会生成`AWS::IAM::Role` CloudFormation 资源。

**`AWS::CodeDeploy::Application`**  
*`LogicalId`: *`ServerlessDeploymentApplication`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::CodeDeploy::DeploymentGroup`**  
*`LogicalId`: *`<function‑LogicalId>DeploymentGroup`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::IAM::Role`**  
*`LogicalId`: *`CodeDeployServiceRole`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

### FunctionUrlConfig 属性已指定
<a name="sam-specification-generated-resources-function-functionurlconfig"></a>

指定`FunctionUrlConfig`属性后， AWS SAM 会根据生成不同的 CloudFormation 资源`AuthType`。

指定`AuthType: NONE`后，将 AWS SAM 生成以下 CloudFormation 资源：

**`AWS::Lambda::Permission`（调用访问权限）**  
*`LogicalId`: *`<function‑LogicalId>URLInvokeAllowPublicAccess`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::Lambda::Permission`（公有访问权限）**  
*`LogicalId`: *`<function‑LogicalId>UrlPublicPermissions`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::Lambda::Url`**  
*`LogicalId`: *`<function‑LogicalId>Url`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

指定`AuthType: AWS_IAM`时，仅 AWS SAM 生成：

**`AWS::Lambda::Url`**  
*`LogicalId`: *`<function‑LogicalId>Url`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

有关该`FunctionUrlConfig`属性的更多信息，请参阅[FunctionUrlConfig](sam-property-function-functionurlconfig.md)。

## 事件源
<a name="sam-specification-generated-resources-function-event-sources"></a>

以下场景基于事件源生成 CloudFormation 资源：

### 指定了 Api 事件源
<a name="sam-specification-generated-resources-function-api"></a>

如果的`Event`属性设置`AWS::Serverless::Function`为`Api`，但*未*指定该`RestApiId`属性，则 AWS SAM 生成`AWS::ApiGateway::RestApi` CloudFormation 资源。

**`AWS::ApiGateway::RestApi`**  
*`LogicalId`: *`ServerlessRestApi`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

### 已指定 HttpApi 事件源
<a name="sam-specification-generated-resources-function-httpapi"></a>

如果的`Event`属性设置`AWS::Serverless::Function`为`HttpApi`，但*未*指定该`ApiId`属性，则 AWS SAM 生成`AWS::ApiGatewayV2::Api` CloudFormation 资源。

**`AWS::ApiGatewayV2::Api`**  
*`LogicalId`: *`ServerlessHttpApi`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

### 指定了流式事件源
<a name="sam-specification-generated-resources-function-streaming"></a>

将的`Event`属性设置`AWS::Serverless::Function`为其中一种流媒体类型时， AWS SAM 会生成`AWS::Lambda::EventSourceMapping` CloudFormation 资源。这适用于以下类型：`DynamoDB`、`Kinesis`、`MQ`、`MSK` 和 `SQS`。

**`AWS::Lambda::EventSourceMapping`**  
*`LogicalId`: *`<function‑LogicalId><event‑LogicalId>`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

### 指定了事件桥（或事件总线）事件源
<a name="sam-specification-generated-resources-function-eventbridge"></a>

将的`Event`属性设置`AWS::Serverless::Function`为事件桥（或事件总线）类型之一时， AWS SAM 会生成`AWS::Events::Rule` CloudFormation 资源。这适用于以下类型：`EventBridgeRule`、`Schedule` 和 `CloudWatchEvents`。

**`AWS::Events::Rule`**  
*`LogicalId`: *`<function‑LogicalId><event‑LogicalId>`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

### 已指定 IotRule 事件源
<a name="sam-specification-generated-resources-function-iotrule"></a>

当的`Event`属性设置`AWS::Serverless::Function`为 Io 时TRule， AWS SAM 会生成`AWS::IoT::TopicRule` CloudFormation 资源。

**`AWS::IoT::TopicRule`**  
*`LogicalId`: *`<function‑LogicalId><event‑LogicalId>`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

## 事件配置
<a name="sam-specification-generated-resources-function-event-configuration"></a>

以下方案根据事件配置生成 CloudFormation 资源：

### OnSuccess （或 OnFailure）属性是为亚马逊 SNS 事件指定的
<a name="sam-specification-generated-resources-function-sns-onsuccess"></a>

如果指定了属性的属性`AWS::Serverless::Function`的`OnSuccess`（或`OnFailure`）`EventInvokeConfig`属性，且目标类型为，`SNS`但*未*指定目标 ARN，则 AWS SAM 生成以下 CloudFormation 资源：`AWS::Lambda::EventInvokeConfig`和。`DestinationConfig` `AWS::SNS::Topic`

**`AWS::Lambda::EventInvokeConfig`**  
*`LogicalId`: *`<function‑LogicalId>EventInvokeConfig`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::SNS::Topic`**  
*`LogicalId`: *`<function‑LogicalId>OnSuccessTopic`（或 `<function‑LogicalId>OnFailureTopic`）  
*可引用属性：*`<function‑LogicalId>.DestinationTopic`  
如果为 Amazon SNS 事件指定了 `OnSuccess` 和 `OnFailure`，为了区分生成的资源，必须使用 `LogicalId`。

### OnSuccess （或 OnFailure）属性是为亚马逊 SQS 事件指定的
<a name="sam-specification-generated-resources-function-sqs-onsuccess"></a>

如果指定了属性的属性`AWS::Serverless::Function`的`OnSuccess`（或`OnFailure`）`EventInvokeConfig`属性，且目标类型为，`SQS`但*未*指定目标 ARN，则 AWS SAM 生成以下 CloudFormation 资源：`AWS::Lambda::EventInvokeConfig`和。`DestinationConfig` `AWS::SQS::Queue`

**`AWS::Lambda::EventInvokeConfig`**  
*`LogicalId`: *`<function‑LogicalId>EventInvokeConfig`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::SQS::Queue`**  
*`LogicalId`: *`<function‑LogicalId>OnSuccessQueue`（或 `<function‑LogicalId>OnFailureQueue`）  
*可引用属性：*`<function‑LogicalId>.DestinationQueue`  
如果为 Amazon SQS 事件指定了 `OnSuccess` 和 `OnFailure`，为了区分生成的资源，必须使用 `LogicalId`。