Internet de las Cosas en AWS: Guía completa
Descubre los servicios de AWS para el desarrollo y la gestión de soluciones IoT.
I
InSkillCoach
· min
Internet de las Cosas en AWS: Guía completa
Descubre los servicios de AWS para el desarrollo y la gestión de soluciones IoT.
1. AWS IoT Core
Configuración del servicio
# Ejemplo de configuración de IoT Core
import boto3
def setup_iot_core():
iot = boto3.client('iot')
# Creación de una política
policy = iot.create_policy(
policyName='MonPolicy',
policyDocument=json.dumps({
'Version': '2012-10-17',
'Statement': [
{
'Effect': 'Allow',
'Action': [
'iot:Connect',
'iot:Publish',
'iot:Subscribe'
],
'Resource': '*'
}
]
})
)
# Creación de una cosa
thing = iot.create_thing(
thingName='MonCapteur',
attributePayload={
'attributes': {
'type': 'temperature',
'location': 'salle-1'
}
}
)
return {
'policy_arn': policy['policyArn'],
'thing_arn': thing['thingArn']
}
Gestión de certificados
# Ejemplo de gestión de certificados IoT
def manage_iot_certificates():
iot = boto3.client('iot')
# Creación de un certificado
certificate = iot.create_keys_and_certificate(
setAsActive=True
)
# Asociación de la política
iot.attach_policy(
policyName='MonPolicy',
target=certificate['certificateArn']
)
# Asociación a la cosa
iot.attach_thing_principal(
thingName='MonCapteur',
principal=certificate['certificateArn']
)
return {
'certificate_arn': certificate['certificateArn'],
'public_key': certificate['keyPair']['PublicKey'],
'private_key': certificate['keyPair']['PrivateKey']
}
2. AWS IoT Greengrass
Configuración de Greengrass
# Ejemplo de configuración de Greengrass
def setup_greengrass():
greengrass = boto3.client('greengrass')
# Creación de un grupo
group = greengrass.create_group(
Name='MonGroupe',
InitialVersion={
'CoreDefinitionVersionArn': 'arn:aws:greengrass:region:account:/greengrass/definition/cores/1',
'DeviceDefinitionVersionArn': 'arn:aws:greengrass:region:account:/greengrass/definition/devices/1',
'FunctionDefinitionVersionArn': 'arn:aws:greengrass:region:account:/greengrass/definition/functions/1'
}
)
# Creación de una definición de función
function = greengrass.create_function_definition(
Name='MonFonction',
InitialVersion={
'Functions': [
{
'FunctionArn': 'arn:aws:lambda:region:account:function:MonFonction',
'FunctionConfiguration': {
'Executable': 'python3.7',
'MemorySize': 128,
'Pinned': True,
'Timeout': 3
},
'Id': 'MonFonctionId'
}
]
}
)
return {
'group_id': group['Id'],
'function_arn': function['LatestVersionArn']
}
Despliegue de funciones
# Ejemplo de despliegue de funciones de Greengrass
def deploy_greengrass_function():
greengrass = boto3.client('greengrass')
# Creación de una versión de grupo
group_version = greengrass.create_group_version(
GroupId='MonGroupe',
CoreDefinitionVersionArn='arn:aws:greengrass:region:account:/greengrass/definition/cores/1',
DeviceDefinitionVersionArn='arn:aws:greengrass:region:account:/greengrass/definition/devices/1',
FunctionDefinitionVersionArn='arn:aws:greengrass:region:account:/greengrass/definition/functions/1'
)
# Despliegue
deployment = greengrass.create_deployment(
GroupId='MonGroupe',
DeploymentType='NewDeployment',
GroupVersionId=group_version['Version']
)
return deployment['DeploymentId']
3. AWS IoT Analytics
Configuración del canal
# Ejemplo de configuración de IoT Analytics
def setup_iot_analytics():
analytics = boto3.client('iotanalytics')
# Creación de un canal
channel = analytics.create_channel(
channelName='MonCanal',
retentionPeriod={
'unlimited': False,
'numberOfDays': 30
},
storage={
'serviceManagedS3': {}
}
)
# Creación de un pipeline
pipeline = analytics.create_pipeline(
pipelineName='MonPipeline',
activities=[
{
'name': 'MonActivite',
'selectAttributes': {
'attributes': ['temperature', 'timestamp']
}
}
]
)
return {
'channel_arn': channel['channelArn'],
'pipeline_arn': pipeline['pipelineArn']
}
Procesamiento de datos
# Ejemplo de procesamiento de datos IoT
def process_iot_data():
analytics = boto3.client('iotanalytics')
# Creación de un dataset
dataset = analytics.create_dataset(
datasetName='MonDataset',
actions=[
{
'actionName': 'MonAction',
'queryAction': {
'sqlQuery': 'SELECT temperature, timestamp FROM MonCanal WHERE temperature > 30'
}
}
],
triggers=[
{
'schedule': {
'expression': 'rate(1 hour)'
}
}
]
)
return dataset['datasetArn']
4. AWS IoT Device Defender
Configuración de la seguridad
# Ejemplo de configuración de Device Defender
def setup_device_defender():
defender = boto3.client('iotdevice')
# Creación de una tarea de auditoría
audit_task = defender.create_audit_suppression(
checkName='CA_CERTIFICATE_EXPIRING_CHECK',
resourceIdentifier={
'deviceCertificateId': 'MonCertificat'
},
expirationDate=datetime.now() + timedelta(days=30)
)
# Configuración de las métricas
metrics = defender.create_metrics_reporting(
targetArn='arn:aws:iot:region:account:thing/MonCapteur',
metricsConfig={
'metrics': [
{
'name': 'CPUUtilization',
'threshold': 80
}
]
}
)
return {
'task_id': audit_task['taskId'],
'metrics_arn': metrics['metricsArn']
}
Monitorización de dispositivos
# Ejemplo de monitorización de dispositivos
def monitor_devices():
defender = boto3.client('iotdevice')
# Creación de una tarea de monitorización
task = defender.create_task(
taskName='MonTache',
targets=['arn:aws:iot:region:account:thing/MonCapteur'],
taskType='AUDIT',
taskParameters={
'checkName': 'CA_CERTIFICATE_EXPIRING_CHECK',
'resourceIdentifier': {
'deviceCertificateId': 'MonCertificat'
}
}
)
return task['taskId']
5. AWS IoT Events
Configuración de los detectores
# Ejemplo de configuración de IoT Events
def setup_iot_events():
events = boto3.client('iotevents')
# Creación de un detector
detector = events.create_detector_model(
detectorModelName='MonDetecteur',
detectorModelDefinition={
'states': [
{
'stateName': 'Normal',
'onInput': {
'events': [
{
'eventName': 'TemperatureHigh',
'condition': 'temperature > 30',
'actions': [
{
'setVariable': {
'variableName': 'alert',
'value': 'true'
}
}
]
}
]
}
}
]
}
)
return detector['detectorModelArn']
Gestión de eventos
# Ejemplo de gestión de eventos IoT
def manage_iot_events():
events = boto3.client('iotevents')
# Creación de un input
input = events.create_input(
inputName='MonInput',
inputDefinition={
'attributes': [
{
'jsonPath': '$.temperature',
'dataType': 'DOUBLE'
}
]
}
)
# Creación de un output
output = events.create_output(
outputName='MonOutput',
outputDefinition={
'attributes': [
{
'jsonPath': '$.alert',
'dataType': 'BOOLEAN'
}
]
}
)
return {
'input_arn': input['inputArn'],
'output_arn': output['outputArn']
}
Conclusión
Puntos clave que hay que recordar:
- Gestionar los dispositivos con IoT Core
- Procesar los datos en el perímetro (edge) con Greengrass
- Analizar los datos con IoT Analytics
- Proteger los dispositivos con Device Defender
- Detectar los eventos con IoT Events
Recomendaciones:
- Elegir los servicios adecuados según las necesidades
- Optimizar la conectividad
- Implantar una monitorización eficaz
- Proteger las comunicaciones
- Seguir las buenas prácticas de AWS
Acerca de InSkillCoach
Experto en formación y tecnologías
Coach especializado en tecnologías avanzadas e IA, impulsado por GNeurone Inc.
Certificaciones:
- AWS Certified Solutions Architect – Professional
- Certificaciones de Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
1.2k
116
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión