

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

# 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 資源：

### 未指定角色屬性
<a name="sam-specification-generated-resources-function-not-role"></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>

`AWS::Serverless::Function` 指定 的 `AutoPublishAlias` 屬性時， 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* Alias*live*。  
*可參考屬性： *`<function‑LogicalId>.Alias`

**`AWS::Lambda::Version`**  
*`LogicalId`: *`<function‑LogicalId>Version<sha>`  
`<sha>` 是建立堆疊時產生的唯一雜湊值。例如，*MyFunction* Version*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>

`AWS::Serverless::Function` 指定 的 `DeploymentPreference` 屬性時， 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`、`MSK`、 `MQ`和 `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`設定為 IoTRule 時， 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 資源：

### 針對 Amazon SNS 事件指定 OnSuccess （或 OnFailure) 屬性 Amazon SNS
<a name="sam-specification-generated-resources-function-sns-onsuccess"></a>

當`EventInvokeConfig``AWS::Serverless::Function`指定 之 屬性的 `DestinationConfig` 屬性 `OnSuccess`（或 `OnFailure`) 屬性，且目的地類型為 ，`SNS`但未**指定目的地 ARN 時， AWS SAM 會產生下列 CloudFormation 資源： `AWS::Lambda::EventInvokeConfig`和 `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 事件`OnFailure`指定 `OnSuccess`和 ，若要區分產生的資源，您必須使用 `LogicalId`。

### 針對 Amazon SQS 事件指定 OnSuccess （或 OnFailure) 屬性 Amazon SQS
<a name="sam-specification-generated-resources-function-sqs-onsuccess"></a>

當`AWS::Serverless::Function`指定 之 `DestinationConfig` 屬性的 `EventInvokeConfig` 屬性 `OnSuccess`（或 `OnFailure`) 屬性，且目的地類型為 ，`SQS`但未**指定目的地 ARN 時， AWS SAM 會產生下列 CloudFormation 資源： `AWS::Lambda::EventInvokeConfig`和 `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 事件`OnFailure`指定 `OnSuccess`和 ，若要區分產生的資源，您必須使用 `LogicalId`。