v2_aws_integration_UpdateAWSAccount/
v2_aws-integration_UpdateAWSAccount.rs

1// Update an AWS integration returns "AWS Account object" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_aws_integration::AWSIntegrationAPI;
4use datadog_api_client::datadogV2::model::AWSAccountPartition;
5use datadog_api_client::datadogV2::model::AWSAccountType;
6use datadog_api_client::datadogV2::model::AWSAccountUpdateRequest;
7use datadog_api_client::datadogV2::model::AWSAccountUpdateRequestAttributes;
8use datadog_api_client::datadogV2::model::AWSAccountUpdateRequestData;
9use datadog_api_client::datadogV2::model::AWSAuthConfig;
10use datadog_api_client::datadogV2::model::AWSAuthConfigRole;
11use datadog_api_client::datadogV2::model::AWSLambdaForwarderConfig;
12use datadog_api_client::datadogV2::model::AWSLambdaForwarderConfigLogSourceConfig;
13use datadog_api_client::datadogV2::model::AWSLogSourceTagFilter;
14use datadog_api_client::datadogV2::model::AWSLogsConfig;
15use datadog_api_client::datadogV2::model::AWSMetricsConfig;
16use datadog_api_client::datadogV2::model::AWSNamespaceTagFilter;
17use datadog_api_client::datadogV2::model::AWSResourcesConfig;
18use datadog_api_client::datadogV2::model::AWSTracesConfig;
19
20#[tokio::main]
21async fn main() {
22    // there is a valid "aws_account_v2" in the system
23    let aws_account_v2_data_id = std::env::var("AWS_ACCOUNT_V2_DATA_ID").unwrap();
24    let body =
25        AWSAccountUpdateRequest::new(
26            AWSAccountUpdateRequestData::new(
27                AWSAccountUpdateRequestAttributes::new("123456789012".to_string())
28                    .account_tags(Some(vec!["key:value".to_string()]))
29                    .auth_config(
30                        AWSAuthConfig::AWSAuthConfigRole(
31                            Box::new(AWSAuthConfigRole::new("DatadogIntegrationRole".to_string())),
32                        ),
33                    )
34                    .aws_partition(AWSAccountPartition::AWS)
35                    .logs_config(
36                        AWSLogsConfig
37                        ::new().lambda_forwarder(
38                            AWSLambdaForwarderConfig::new()
39                                .lambdas(
40                                    vec![
41                                        "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder".to_string()
42                                    ],
43                                )
44                                .log_source_config(
45                                    AWSLambdaForwarderConfigLogSourceConfig
46                                    ::new().tag_filters(
47                                        vec![
48                                            AWSLogSourceTagFilter::new()
49                                                .source("s3".to_string())
50                                                .tags(Some(vec!["test:test".to_string()]))
51                                        ],
52                                    ),
53                                )
54                                .sources(vec!["s3".to_string()]),
55                        ),
56                    )
57                    .metrics_config(
58                        AWSMetricsConfig::new()
59                            .automute_enabled(true)
60                            .collect_cloudwatch_alarms(true)
61                            .collect_custom_metrics(true)
62                            .enabled(true)
63                            .tag_filters(
64                                vec![
65                                    AWSNamespaceTagFilter::new()
66                                        .namespace("AWS/EC2".to_string())
67                                        .tags(Some(vec!["key:value".to_string()]))
68                                ],
69                            ),
70                    )
71                    .resources_config(
72                        AWSResourcesConfig::new()
73                            .cloud_security_posture_management_collection(false)
74                            .extended_collection(false),
75                    )
76                    .traces_config(AWSTracesConfig::new()),
77                AWSAccountType::ACCOUNT,
78            ),
79        );
80    let configuration = datadog::Configuration::new();
81    let api = AWSIntegrationAPI::with_config(configuration);
82    let resp = api
83        .update_aws_account(aws_account_v2_data_id.clone(), body)
84        .await;
85    if let Ok(value) = resp {
86        println!("{:#?}", value);
87    } else {
88        println!("{:#?}", resp.unwrap_err());
89    }
90}