v2_aws_integration_CreateAWSAccount_1716720881/
v2_aws-integration_CreateAWSAccount_1716720881.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_aws_integration::AWSIntegrationAPI;
4use datadog_api_client::datadogV2::model::AWSAccountCreateRequest;
5use datadog_api_client::datadogV2::model::AWSAccountCreateRequestAttributes;
6use datadog_api_client::datadogV2::model::AWSAccountCreateRequestData;
7use datadog_api_client::datadogV2::model::AWSAccountPartition;
8use datadog_api_client::datadogV2::model::AWSAccountType;
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 body = AWSAccountCreateRequest::new(AWSAccountCreateRequestData::new(
23 AWSAccountCreateRequestAttributes::new(
24 AWSAuthConfig::AWSAuthConfigRole(Box::new(AWSAuthConfigRole::new(
25 "DatadogIntegrationRole".to_string(),
26 ))),
27 "123456789012".to_string(),
28 AWSAccountPartition::AWS,
29 )
30 .account_tags(Some(vec!["key:value".to_string()]))
31 .logs_config(
32 AWSLogsConfig::new().lambda_forwarder(
33 AWSLambdaForwarderConfig::new()
34 .lambdas(vec![
35 "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder"
36 .to_string(),
37 ])
38 .log_source_config(AWSLambdaForwarderConfigLogSourceConfig::new().tag_filters(
39 vec![
40 AWSLogSourceTagFilter::new()
41 .source("s3".to_string())
42 .tags(Some(vec!["test:test".to_string()]))
43 ],
44 ))
45 .sources(vec!["s3".to_string()]),
46 ),
47 )
48 .metrics_config(
49 AWSMetricsConfig::new()
50 .automute_enabled(true)
51 .collect_cloudwatch_alarms(true)
52 .collect_custom_metrics(true)
53 .enabled(true)
54 .tag_filters(vec![AWSNamespaceTagFilter::new()
55 .namespace("AWS/EC2".to_string())
56 .tags(Some(vec!["key:value".to_string()]))]),
57 )
58 .resources_config(
59 AWSResourcesConfig::new()
60 .cloud_security_posture_management_collection(false)
61 .extended_collection(false),
62 )
63 .traces_config(AWSTracesConfig::new()),
64 AWSAccountType::ACCOUNT,
65 ));
66 let configuration = datadog::Configuration::new();
67 let api = AWSIntegrationAPI::with_config(configuration);
68 let resp = api.create_aws_account(body).await;
69 if let Ok(value) = resp {
70 println!("{:#?}", value);
71 } else {
72 println!("{:#?}", resp.unwrap_err());
73 }
74}