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,
|
||||
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
|
||||
|
||||
log.Printf("[DEBUG] Reading API Gateway Deployment %s", d.Id())
|
||||
restApiId := d.Get("rest_api_id").(string)
|
||||
out, err := conn.GetDeployment(&apigateway.GetDeploymentInput{
|
||||
RestApiId: aws.String(d.Get("rest_api_id").(string)),
|
||||
RestApiId: aws.String(restApiId),
|
||||
DeploymentId: aws.String(d.Id()),
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -104,6 +115,18 @@ func resourceAwsApiGatewayDeploymentRead(d *schema.ResourceData, meta interface{
|
|||
log.Printf("[DEBUG] Received API Gateway Deployment: %s", out)
|
||||
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 {
|
||||
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}
|
||||
}
|
||||
|
||||
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 {
|
||||
m := map[string]*string{}
|
||||
for k, v := range config {
|
||||
|
|
|
@ -68,4 +68,9 @@ The following arguments are supported:
|
|||
The following attributes are exported:
|
||||
|
||||
* `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
|
||||
|
|
Loading…
Reference in New Issue