-
Notifications
You must be signed in to change notification settings - Fork 113
/
config.go
95 lines (84 loc) · 3.24 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package lambda
import (
"github.com/upbound/upjet/pkg/config"
"github.com/upbound/provider-aws/config/common"
)
// Configure adds configurations for lambda group.
func Configure(p *config.Provider) {
p.AddResourceConfigurator("aws_lambda_alias", func(r *config.Resource) {
r.References["function_name"] = config.Reference{
Type: "Function",
}
})
p.AddResourceConfigurator("aws_lambda_code_signing_config", func(r *config.Resource) {
r.References["allowed_publishers.signing_profile_version_arns"] = config.Reference{
Type: "github.com/upbound/provider-aws/apis/signer/v1beta1.SigningProfile",
Extractor: common.PathARNExtractor,
}
})
p.AddResourceConfigurator("aws_lambda_event_source_mapping", func(r *config.Resource) {
r.References["function_name"] = config.Reference{
Type: "Function",
Extractor: common.PathARNExtractor,
}
delete(r.References, "event_source_arn")
// It can be fulfilled by multiple types.
delete(r.References, "source_access_configuration.uri")
r.UseAsync = true
})
// TODO: Automated test pipeline cannot be run for the lambda group resources.
// Because many resources of this group need `lambda_function` resource and it
// has a `filename` field for creation. This field reads a file from local
// storage and uses this file during provisioning.
// We may consider adding metadata configuration for the `lambda_function` in
// a future PR.
p.AddResourceConfigurator("aws_lambda_function", func(r *config.Resource) {
r.References["s3_bucket"] = config.Reference{
Type: "github.com/upbound/provider-aws/apis/s3/v1beta1.Bucket",
}
r.References["role"] = config.Reference{
Type: "github.com/upbound/provider-aws/apis/iam/v1beta1.Role",
Extractor: common.PathARNExtractor,
}
delete(r.TerraformResource.Schema, "filename")
})
p.AddResourceConfigurator("aws_lambda_function_event_invoke_config", func(r *config.Resource) {
r.References["destination_config.on_failure.destination"] = config.Reference{
Type: "github.com/upbound/provider-aws/apis/sqs/v1beta1.Queue",
Extractor: common.PathARNExtractor,
}
r.References["destination_config.on_success.destination"] = config.Reference{
Type: "github.com/upbound/provider-aws/apis/sns/v1beta1.Topic",
Extractor: common.PathARNExtractor,
}
delete(r.References, "function_name")
delete(r.References, "qualifier")
})
p.AddResourceConfigurator("aws_lambda_function_url", func(r *config.Resource) {
r.References["function_name"] = config.Reference{
Type: "Function",
}
})
p.AddResourceConfigurator("aws_lambda_invocation", func(r *config.Resource) {
r.References["function_name"] = config.Reference{
Type: "Function",
}
})
p.AddResourceConfigurator("aws_lambda_permission", func(r *config.Resource) {
r.References["function_name"] = config.Reference{
Type: "Function",
}
r.References["qualifier"] = config.Reference{
Type: "Alias",
}
delete(r.References, "source_arn")
})
p.AddResourceConfigurator("aws_lambda_provisioned_concurrency_config", func(r *config.Resource) {
r.LateInitializer = config.LateInitializer{
IgnoredFields: []string{"provisioned_concurrent_executions"},
}
r.UseAsync = true
delete(r.References, "function_name")
delete(r.References, "qualifier")
})
}