v2_aws_integration_UpdateAWSAccount/
v2_aws-integration_UpdateAWSAccount.rs1use 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 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}