in providers/aws/lambda.go [86:165]
func (g *LambdaGenerator) addFunctions(svc *lambda.Client) error {
p := lambda.NewListFunctionsPaginator(svc, &lambda.ListFunctionsInput{})
for p.HasMorePages() {
page, err := p.NextPage(context.TODO())
if err != nil {
return err
}
for _, function := range page.Functions {
g.Resources = append(g.Resources, terraformutils.NewResource(
*function.FunctionArn,
*function.FunctionName,
"aws_lambda_function",
"aws",
map[string]string{
"function_name": *function.FunctionName,
},
lambdaAllowEmptyValues,
map[string]interface{}{},
))
gp, err := svc.GetPolicy(context.TODO(), &lambda.GetPolicyInput{
FunctionName: aws.String(*function.FunctionArn),
})
if err != nil {
// skip ResourceNotFoundException, because there may be only inline policy defined
var apiErr smithy.APIError
if !errors.As(err, &apiErr) || apiErr.ErrorCode() != "ResourceNotFoundException" {
return err
}
}
if gp != nil {
outputPolicy := *gp.Policy
var policy Policy
err = json.Unmarshal([]byte(outputPolicy), &policy)
if err != nil {
return err
}
for _, statement := range policy.Statement {
g.Resources = append(g.Resources, terraformutils.NewResource(
statement.Sid,
statement.Sid,
"aws_lambda_permission",
"aws",
map[string]string{
"statement_id": statement.Sid,
"function_name": *function.FunctionArn,
},
lambdaAllowEmptyValues,
map[string]interface{}{},
))
}
}
pi := lambda.NewListFunctionEventInvokeConfigsPaginator(svc,
&lambda.ListFunctionEventInvokeConfigsInput{
FunctionName: function.FunctionName,
})
for pi.HasMorePages() {
piage, err := pi.NextPage(context.TODO())
if err != nil {
return err
}
for _, functionEventInvokeConfig := range piage.FunctionEventInvokeConfigs {
g.Resources = append(g.Resources, terraformutils.NewSimpleResource(
*function.FunctionArn,
"feic_"+*functionEventInvokeConfig.FunctionArn,
"aws_lambda_function_event_invoke_config",
"aws",
lambdaAllowEmptyValues,
))
}
}
}
}
return nil
}