mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
provider/aws: Expose execution ARN + invoke URL for APIG deployment (#13889)
This commit is contained in:
parent
61d183eded
commit
3c2a40a192
@ -54,6 +54,16 @@ func resourceAwsApiGatewayDeployment() *schema.Resource {
|
|||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Computed: true,
|
Computed: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"invoke_url": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
"execution_arn": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -90,8 +100,9 @@ func resourceAwsApiGatewayDeploymentRead(d *schema.ResourceData, meta interface{
|
|||||||
conn := meta.(*AWSClient).apigateway
|
conn := meta.(*AWSClient).apigateway
|
||||||
|
|
||||||
log.Printf("[DEBUG] Reading API Gateway Deployment %s", d.Id())
|
log.Printf("[DEBUG] Reading API Gateway Deployment %s", d.Id())
|
||||||
|
restApiId := d.Get("rest_api_id").(string)
|
||||||
out, err := conn.GetDeployment(&apigateway.GetDeploymentInput{
|
out, err := conn.GetDeployment(&apigateway.GetDeploymentInput{
|
||||||
RestApiId: aws.String(d.Get("rest_api_id").(string)),
|
RestApiId: aws.String(restApiId),
|
||||||
DeploymentId: aws.String(d.Id()),
|
DeploymentId: aws.String(d.Id()),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -104,6 +115,18 @@ func resourceAwsApiGatewayDeploymentRead(d *schema.ResourceData, meta interface{
|
|||||||
log.Printf("[DEBUG] Received API Gateway Deployment: %s", out)
|
log.Printf("[DEBUG] Received API Gateway Deployment: %s", out)
|
||||||
d.Set("description", out.Description)
|
d.Set("description", out.Description)
|
||||||
|
|
||||||
|
region := meta.(*AWSClient).region
|
||||||
|
stageName := d.Get("stage_name").(string)
|
||||||
|
|
||||||
|
d.Set("invoke_url", buildApiGatewayInvokeURL(restApiId, region, stageName))
|
||||||
|
|
||||||
|
accountId := meta.(*AWSClient).accountid
|
||||||
|
arn, err := buildApiGatewayExecutionARN(restApiId, region, accountId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
d.Set("execution_arn", arn+"/"+stageName)
|
||||||
|
|
||||||
if err := d.Set("created_date", out.CreatedDate.Format(time.RFC3339)); err != nil {
|
if err := d.Set("created_date", out.CreatedDate.Format(time.RFC3339)); err != nil {
|
||||||
log.Printf("[DEBUG] Error setting created_date: %s", err)
|
log.Printf("[DEBUG] Error setting created_date: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -1927,6 +1927,20 @@ func flattenApiGatewayUsagePlanQuota(s *apigateway.QuotaSettings) []map[string]i
|
|||||||
return []map[string]interface{}{settings}
|
return []map[string]interface{}{settings}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func buildApiGatewayInvokeURL(restApiId, region, stageName string) string {
|
||||||
|
return fmt.Sprintf("https://%s.execute-api.%s.amazonaws.com/%s",
|
||||||
|
restApiId, region, stageName)
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildApiGatewayExecutionARN(restApiId, region, accountId string) (string, error) {
|
||||||
|
if accountId == "" {
|
||||||
|
return "", fmt.Errorf("Unable to build execution ARN for %s as account ID is missing",
|
||||||
|
restApiId)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("arn:aws:execute-api:%s:%s:%s",
|
||||||
|
region, accountId, restApiId), nil
|
||||||
|
}
|
||||||
|
|
||||||
func expandCognitoSupportedLoginProviders(config map[string]interface{}) map[string]*string {
|
func expandCognitoSupportedLoginProviders(config map[string]interface{}) map[string]*string {
|
||||||
m := map[string]*string{}
|
m := map[string]*string{}
|
||||||
for k, v := range config {
|
for k, v := range config {
|
||||||
|
@ -68,4 +68,9 @@ The following arguments are supported:
|
|||||||
The following attributes are exported:
|
The following attributes are exported:
|
||||||
|
|
||||||
* `id` - The ID of the deployment
|
* `id` - The ID of the deployment
|
||||||
|
* `invoke_url` - The URL to invoke the API pointing to the stage,
|
||||||
|
e.g. `https://z4675bid1j.execute-api.eu-west-2.amazonaws.com/prod`
|
||||||
|
* `execution_arn` - The execution ARN to be used in [`lambda_permission`](/docs/providers/aws/r/lambda_permission.html)'s `source_arn`
|
||||||
|
when allowing API Gateway to invoke a Lambda function,
|
||||||
|
e.g. `arn:aws:execute-api:eu-west-2:123456789012:z4675bid1j/prod`
|
||||||
* `created_date` - The creation date of the deployment
|
* `created_date` - The creation date of the deployment
|
||||||
|
Loading…
Reference in New Issue
Block a user