func()

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
}